【发布时间】:2012-08-30 14:59:47
【问题描述】:
我想知道是否有任何工具可以提供更详细的文件历史记录,尤其是关于保留 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,但此解决方案无法扩展,并且要求您已经知道哪些文件是错误合并的一部分。
如果有人做出错误的合并决定,则很难追踪哪些文件保持不变。否则,如果合并对文件进行了更改,则很容易看到这一点。
【问题讨论】:
标签: git merge revision-history