我有两个长期运行的分支机构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)
对于每一次冲突.
虽然只是给我提供冲突提交列表的任何内容都足以保证赏金.
你可以很容易地接近:
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到日志命令以一起列出每个分支的提交。