【发布时间】:2013-10-30 20:57:53
【问题描述】:
我将一个远程分支合并到一个本地分支。 合并后,我得到“被他们删除”的文件。这意味着在远程分支中这些文件被删除了,但它们在本地分支中有更改,如果我也从本地分支中删除文件,这些更改将会丢失。
如何以每个文件的差异形式获取这些更改?只是想知道 - 我正在失去什么。
【问题讨论】:
-
为什么不简单地将更改后的本地分支签出为新分支?这样,您可以切换回(记得先将更改提交到新创建的分支)到您的另一个分支进行远程合并,然后执行
git diff merged_branch_name local_changes_branch_name。 -
我不明白你的意思。我绝对想做合并,我不会将所有更改保存在已删除文件中。我想知道 - 在实际合并提交之前 - 哪些更改会丢失:然后,我可能会忽略它们,或者可能会在新的地方重新实现它们,或者其他什么。
-
我的建议只是实现您想要的差异的一种方法。或者,如果您坚持在 diff 之前不进行任何类型的合并,您可以尝试:
git fetch(获取远程分支但 not 合并它)然后git diff使用远程(即remotes/origin/master,不仅仅是master之类的东西)作为参数。一旦满意,您就可以执行git merge。这有帮助吗? -
它没有帮助,因为
git diff给出了整个文件(本地)和什么都没有(远程)之间的区别。 -
老实说,我仍然无法理解 which 提交你真正想要区分的内容。但是,如果我之前的提示没有产生您想要的差异,您可能想要查找本地分支中的更改与远程分支中的更改不同的共同祖先提交。然后,您应该针对本地分支 HEAD 和此祖先提交进行比较,以获得您想要的这些所谓的更改。也请参阅此 link,它可能比我更清楚。
标签: git conflict git-merge merge-conflict-resolution