我合并了两个分支并且发生了冲突。其中一个只是一团糟,因为它在一个分支上被强烈重新考虑(B1)。但是,我希望另一个分支(B2)包含一个简单的改变,不幸的是,它影响了很多行。
所以我认为最简单的合并方法是保持B1,并重新对B2进行更改。但是我想在开始之前确定B2上的变化是什么,以确保我不会忘记任何事情。
要这样做,
答案 0 :(得分:3)
请注意,当您正在手动合并某些冲突文件file.ext
时,该文件的所有三个版本都存储在index / staging-area中,为这种情况保留的插槽。他们编号:
--ours
提交中的HEAD
版本; --theirs
版本。虽然git checkout
有--ours
和--theirs
来提取这两个版本,但它缺少基本版本的选项。但是,git show
可用于提取所有三个版本:
git show :1:file.ext > file.ext.base
git show :2:file.ext > file.ext.ours
git show :3:file.ext > file.ext.theirs
例如。
如果您使用git mergetool
命令,它只是一个shell脚本包装器,它执行上述操作(使用略有不同的名称),然后在这三个文件上运行您选择的合并工具。
答案 1 :(得分:0)
我记得它:
git merge-base B1 B2
给出分支B1和B2的共同祖先。这适用于整个分支机构。但以后的更改不适用于两个分支上的任何文件。
然后,要看到差异,只需
git diff common_ancestor..B2 path/to/the/file
其中common_ancestor是使用git merge-base