Git:无法撤消本地更改(错误:路径…未合并)


336

我有以下工作树状态

$ git status foo/bar.txt
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       deleted by us:      foo/bar.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

文件foo/bar.txt在那里,我想再次使其变为“不变状态”(类似于“ svn恢复”):

$ git checkout HEAD foo/bar.txt
error: path 'foo/bar.txt' is unmerged
$ git reset HEAD foo/bar.txt
Unstaged changes after reset:
M       foo/bar.txt

现在变得令人困惑:

$ git status foo/bar.txt
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   foo/bar.txt
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   foo/bar.txt
#

两节中的文件相同,新的还是修改的?我该怎么办?


7
我希望有人能解释我们如何陷入这种情况,为什么会发生这种情况,以及为什么解决方案会起作用。
Marcos Dione

1
我遇到了这种情况,因为我在重新设置基准后弹出存储库,这使我陷入了合并冲突(存储库弹出合并)...要解决此问题,我执行了“ checkout --theirs”...。更改仍然存在..删除那些..我再次尝试对文件进行检出..那是我看到上述错误的时候。
阿林丹·罗伊休杜里

Answers:


555

您做错了方法。您首先要进行重置,以取消暂存文件,然后签出,以还原本地更改。

尝试这个:

$ git reset foo/bar.txt
$ git checkout foo/bar.txt

谢谢; 像魅力一样运作!我不得不提交(不是使用-a arg,相关的更改已经上演了),然后我就可以像往常一样推/拉。
帕特里克

18
对我来说,它需要一个:<br/> $ git reset-foo / bar.txt <br/> $ git checkout-foo / bar.txt <br/>(注意中间的多余“-”)
1

4
好的语法是“ git reset HEAD file1 file2 ...”,然后是“ git checkout-file1 file2 ...”
Thomas Decaux 2012年

1
当投票最高的答案基本上只是说“您做错了”时,这总是很有趣的:)
nathanchere 2012年

4
一个解释(关于做什么的事情)会很棒……
Kissaki

51

这对我来说非常合适:

$ git reset -- foo/bar.txt
$ git checkout foo/bar.txt

14
git checkout origin/[branch] .
git status

//注意末尾的点(。)。一切都会好起来的


-2
git checkout foo/bar.txt

你有尝试过吗?(没有HEAD关键字)

我通常以这种方式还原更改。


1
checkout在合并过程中尝试a时的典型错误: $ git co path/to/file= result => error: path 'path/to/file' is unmerged =>因此,首先运行:$ git reset path/to/file,然后git checkout path/to/file应该可以工作。
迈克尔,

2
不指定HEAD将使git checkout从索引中检出,这是一个较弱的操作(内容源是索引而不是HEAD)。此外,在这种情况下,我认为这根本不起作用-问题所陈述的是具体问题。难道尝试了吗?
Kissaki

-4

我发现git stash对于临时处理所有“脏”状态非常有用。


4
如果您觉得它有用,请说明如何在此具体情况下提供帮助。您在这里如何使用它?
Kissaki
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.