如何查看树冲突中的更改(“由我们删除”或“由它们删除”)?

时间:2019-07-19 09:41:33

标签: git git-merge-conflict

在git中合并或重新建立两个分支时,一个文件已被删除而另一个文件已被修改,则git产生冲突。 git status将文件显示为“由我们删除”或“由他们删除”。

我发现了很多有关如何解决冲突的问题,包括:

但是,大多数答案都假设您已经完全知道冲突是什么,并且只需要告诉git保留或删除文件即可。

您如何找出未删除的文件版本中的更改git只是将整个文件保留在工作副本中,并且不标记任何更改。

例如:

  • 在分支develop上,用户A更改了文件foo.x
  • 在分支feature上,用户B重构代码,删除文件foo.x,因为它的功能现在在其他文件中
  • 用户B尝试将develop合并到feature中,并得到标记为deleted by us的冲突
  • 用户B如何查看用户A的更改,以查看重构代码中是否需要更改?

1 个答案:

答案 0 :(得分:2)

如果“被我们删除”:

git diff <your-branch>...<branch-you're-merging-to> /path/to/file

如果“被他们删除”:

git diff <branch-you're-merging-to>...<your-branch> /path/to/file

git-diff手册页中:

  

git diff [<选项>] <提交> ... <提交> [-] [<路径> ...]

     

此表单用于查看包含且直到第二个的分支上的更改,该更改始于两个的共同祖先。 “ git diff A ... B”等效于“ git diff $(git merge-base A B)B”。您可以省略中的任何一个,其效果与使用HEAD相同。

这只会向您显示未删除文件的分支中所做的更改,即,如果删除文件的分支首先对其进行了更改,则这些更改不会反映在差异中。

如果您要重新部署而不是合并,则“被我们删除” /“被他们删除”消息将是相反的,因此请使用其他命令。