显示导致冲突的提交的作者和提交消息

Dan*_*iel 10 git git-commit

我有两个长期运行的分支机构dev,还有一个远期未来的版本future.我们通过从显示错误的标记分支,修复它,然后打开两个分支的拉取请求,为受支持的版本创建修复程序.如果'future'分支中存在冲突,我们的开发人员应该创建一个新的分支,解决冲突,并为未来打开另一个PR.

不幸的是,我们的团队足够大,以至于还没有大量的第二个PR.我现在需要弄清楚哪些确切的提交会导致冲突.我可以通过在每个冲突的文件上运行git blame来手动执行此操作,并查看该======行的每一侧的提交,但这实际上并没有给我足够的信息,我必须为每个冲突和每个文件手动运行git blame .

有没有更简单的方法?理想情况下,我想要的东西相当于:

Commit X: <coworker1> I updated something.
Commit Y: <coworker2> Something fixed.
Conflicts: 
   some/file/here
   a/different/file.
Run Code Online (Sandbox Code Playgroud)

对于每一次冲突.

虽然只是给我提供冲突提交列表的任何内容都足以保证赏金.

jth*_*ill 5

你可以很容易地接近:

git ls-files -u | cut -f2- | uniq \
| while read conflicted; do
        echo @@@ conflicted file $conflicted touched in this merge by:
        git log HEAD...MERGE_HEAD --left-right --format='    %h %aN %s' -- "$conflicted"
done
Run Code Online (Sandbox Code Playgroud)

实际上,这只是您关心的右分支(正在合并的分支)提交作者 - 左分支已经被合并,让任何触及您已经得到的内容的人都可以解决它。

添加--topo-order到日志命令以一起列出每个分支的提交。


Amb*_*ber 3

您可以git diff --diff-filter=U在合并时运行以查看所有(且仅)未合并文件的差异输出。它仍然包含文件内容,但比为每个文件手动运行命令更好。