我想知道是否有任何工具可以提供更详细的文件历史记录,尤其是在our
保留更改的合并方面。这个问题最好用一个例子来解释。
假设我对master
一个feature
分支进行了冲突的更改:
git checkout master
<made some change to file.txt>
git commit -a -m "Change on master"
git checkout -b feature
<made conflicting change to file.txt>
git commit -a -m "Change on feature"
如果我合并feature
并master
保留我的更改,git checkout --ours file.txt
我会得到不同的结果,而file.txt
不是我要合并master
到feature
(然后合并feature
到master
快进master
)。(我理解--ours
有效的合并也可能在不经意间用mergetool
.)
在这两种情况下使用git log -p
,合并提交不会报告任何更改file.txt
,但其内容在不同的情况下是不同的。现在file.txt
的变更历史被混淆了,很难知道是哪个版本master
。我可以运行git log -- file.txt
,但此解决方案无法扩展,并且要求您已经知道哪些文件是错误合并的一部分。
如果有人做出错误的合并决定,则很难追踪哪些文件保持不变。否则,如果合并对文件进行了更改,则很容易看到这一点。