1

我想知道是否有任何工具可以提供更详细的文件历史记录,尤其是在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"

如果我合并featuremaster保留我的更改,git checkout --ours file.txt我会得到不同的结果,而file.txt不是我要合并masterfeature(然后合并featuremaster快进master)。(我理解--ours有效的合并也可能在不经意间用mergetool.)

在这两种情况下使用git log -p,合并提交不会报告任何更改file.txt,但其内容在不同的情况下是不同的。现在file.txt的变更历史被混淆了,很难知道是哪个版本master。我可以运行git log -- file.txt,但此解决方案无法扩展,并且要求您已经知道哪些文件是错误合并的一部分。

如果有人做出错误的合并决定,则很难追踪哪些文件保持不变。否则,如果合并对文件进行了更改,则很容易看到这一点。

4

1 回答 1

1

如果冲突得到解决,它们只是得到了错误的解决(根据您对此答案的评论),查看file.txt两个分支之间差异的一种方法是git diff

git diff master feature -- file.txt

如果您在git diff master feature没有任何文件规范的情况下发布,您将看到所有 repo 文件中的所有差异。的创造性应用程序git diff将允许您隔离几乎任何您想要的更改。

否则,您最好的选择可能是合并提交本身。默认情况下,提交消息将输出一个冲突部分,我建议不要删除它。

于 2012-09-05T20:47:39.243 回答