Git中的大规模合并提交?

时间:2014-08-19 15:18:30

标签: git github git-branch git-merge git-rebase

我知道 rebasing 的工作原理是将每个本地提交一次转移到更新的主分支,但是有一种方法可以在大规模合并提交后一次查看所有合并冲突而不是一次一个?谢谢!

1 个答案:

答案 0 :(得分:0)

在rebase期间,您可以看到冲突,这可能会在rebase的不同阶段多次发生。

如果您只想查看一次冲突,可以将正在重新命名的历史记录压缩为单个提交,然后重新设置单个提交。将合并冲突保存到文件中。然后重置回原来的位置,并做一个保留个人历史的rebase。

假设我们要将master重新绑定到上游origin/master。他们分歧,所以会有冲突。首先,让我们以交互方式将所有不在上游的master提交重新绑定到master,然后压缩它们:

$ git checkout master
$ git tag starting-point
$ git rebase --interactive $(git merge-base master origin/master)
# in the edit window, "pick" the first commit, "squash" all the rest!

现在master上只有一个新的提交,其中合并基础为其父级。合并或改变它:

$ git rebase

现在所有冲突都在一起发生,因为一切都在一次提交中,所以现在你可以用一个差异来查看它们:

$ git diff

这是一种特殊的“diff of diff”格式。要看一个普通的差异:

$ git diff HEAD

将这些冲突保存到文件中:

$ git diff HEAD > conflicts.diff

现在,逃回起点,将master置于其所拥有的状态:

$ git rebase abort
$ git reset --hard starting-point

现在你有conflicts.diff;你现在可以按照惯例合并或改变,无论你对这些信息的使用是什么。

它们可能与您在重新定位个人时遇到的冲突完全相同 提交。