我正在探索可能的选项来撤消使用 git 完成的操作。我看到这篇文章,发现有 3 个选项git reset,git checkout并且git restore。
我想我有点理解 git reset 的作用(不完全理解,但我认为这是一个单独的问题),但是我不明白运行git checkout -- some_file和git restore --staged some_file
这两个命令更改工作目录中的文件的方式有区别吗?
总结托雷克的回答:
git checkout -- somefile用索引中的内容覆盖工作树git restore --staged -- somefile从该文件的 HEAD 恢复索引内容(旧的git reset -- file,通常用于取消暂存由错误添加的修改文件)Torek 坚持认为这个事实git restore --source <aCommit> --worktree -- somefile是新的(无法通过签出完成):能够在不触及索引的情况下恢复工作树中的文件。
Darren Ng在评论中补充道:
现在我可以使用
single git restore --staged --worktree -- FILE, 而不是 2-stepgit restore --staged FILE+放弃分阶段更改git checkout FILE。
确实如此,但 Git 2.41(2023 年第 2 季度)明确表示,在同时使用--staged --worktree.
虽然“ git restore” (man)支持这样的选项--ours仅在冲突合并期间才有意义,但这些选项仅在更新工作树文件时才有意义。当“ ”和“ ”同时生效
时,这些选项被标记为不兼容。--staged--worktree
请参阅Andy Koppe ( )提交的 ee8a888(2023 年 2 月 26 日)。(由Junio C Hamano 合并 -- --提交67076b8,2023年 3 月 19 日)akoppe
gitster
restore:--staged --worktree合并选项错误签署人:Andy Koppe
当与 组合时,“restore”命令已经拒绝
--merge、--conflict和选项,但在添加时也接受--ours它们。--theirs--staged--worktree不幸的是,这似乎没有做任何有用的事情。当同时给出and时, and
选项似乎会被忽略,而对于or ,该命令具有与不存在该选项相同的效果。--ours--theirs--staged--worktree--merge--conflict--staged
--staged --worktree因此,也用“”拒绝这些选项,用于opts->accept_ref区分恢复和结帐。
--staged添加“ ”和“ ”的测试--staged --worktree。
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |