为什么在没有提及冲突的情况下会覆盖用户的更改?

时间:2011-10-25 23:09:21

标签: git

我正在组建一个双人团队。我对名为PostSet的文件进行了一些更改。我推动了这些改变。我的合作伙伴也对同一个文件进行了更改,甚至对同一个查询也进行了更改。他跑了

git pull --rebase origin master

为了将他的变化置于我的最高层,并保持工作历史的清洁,就像我们一直做的那样。通常,如果我们编辑同一行,我们会遇到冲突。

他被告知与一些图像文件有关的一大堆冲突(一个完全不同的问题)。只是为了解释一切,他通过使用

解决了这个问题
git rm -r path/to/image/dir

然后

git add -A

将所有这些更改添加到索引中。使用后

git rebase --continue

没有更多的冲突。但是,我们立即注意到相关查询现在正在使用我的更改,而不是他的。实际上,整个文件PostSet在rebase之后是旧版本。

不应该有关于PostSet文件的某种冲突警告吗?我们做错了什么吗?

简而言之,我们无法自信地继续发展,直到我们知道更改将不会被覆盖,所以我们相当沮丧。

非常感谢,

帕拉贡

编辑:我们完全复制了我们的步骤并获得了相同的结果。

编辑:鉴于没有人似乎有任何线索,我可能会将此报告为git中的错误。如果有人提出一个疯狂的建议,我会暂时搁置一段时间。

1 个答案:

答案 0 :(得分:1)

我使用git版本1.7.3.1执行了相同的步骤。 在这一步之后:

git rm -r path/to/image/dir

文件PostSet仍处于冲突模式,您可以通过请求该状态(这是我的输出)进行验证:

$ git status -s
UU PostSet
D  images/test.jpg

现在你仍然需要解决PostSet中的冲突。 如果你跳过它并执行

git add -A 

你得到以下情况,git认为它是一个已解决的冲突,而你实际上并没有这样做:

$ git status -s
M  PostSet
D  images/test.jpg

最好先解决冲突,然后再使用git add -A

或者我可能在这里遗漏了一些信息?