让我们从一个情况开始。
git stash
git commit -m "Commit message"
git stash apply
由于提交,我在2个文件中收到合并冲突。我不再希望这两个文件发生变化所以我试图恢复这些变化。
我做了git checkout -- background.js
失败并出现错误
错误:路径' src / background / background.js'是未合并的
但后来我读了this SO post并尝试了
git checkout HEAD -- background.js
它成功运作。它发生在我身上的两个文件。我想了解不同之处
git checkout -- file
和git checkout HEAD -- file
答案 0 :(得分:4)
通常情况并无太大差异。关键是你要解决冲突。从手册页http://csurs.csr.uky.edu/cgi-bin/man/man2html?1+git-checkout
git checkout [--patch] [] [ - ] ...
...
由于之前的合并失败,索引可能包含未合并的条目。 默认情况下,如果您尝试从中查看此类条目 索引,结账操作将失败,什么都不会 检查过了。使用-f将忽略这些未合并的条目。内容 从合并的特定方面可以检出索引 使用--ours或 - 他们的。使用-m,对工作树进行了更改 可以丢弃文件以重新创建原始冲突合并 结果
当它失败时,你以这种方式使用checkout
。因此,通过设计,由于未合并的更改(不解决冲突),结帐将失败。添加HEAD
告诉git使用哪个“分支”,实际上会检出文件。
HEAD指的是您在repo中的特定SHA。所以你告诉git从哪里拉取文件的方式与你对不同分支的方式相同。