有一种简单的方法可以在git之间获得多个(两个以上)分支之间的差异吗? (有点像“章鱼差异”?)
情况是有一个分支(称为分支A),它是多个其他分支(称为B和C)的合并以及其他修改的结果。 (分支A与分支B不同,有多个本地修改,然后分支C合并,然后进行更多本地修改,然后更多本地修改和重新合并以包括B和C分支的更新。)
我想要做的是查看分支A特有的所有本地更改 - 也就是说,查看对分支A或分支C上没有的分支A所做的更改。
答案 0 :(得分:1)
建立一个分支" bPlusC"离开B,然后合并" C"。与" A"。
区别开来git checkout -b bPlusC B
git merge --no-ff C
git checkout A
git diff bPlusC..HEAD
编辑:基于R.M。的评论:
如果B或C的提交不在A中,请使用:
git checkout -b bPlusC $(git merge-base A B)
git merge --no-ff $(git merge-base A C)
git checkout A
git diff bPlusC..HEAD
答案 1 :(得分:0)
(发布的选项并不能完全回答我的问题,但在研究过程中我感到困惑。)
一种可能性是使用git log
的-p(补丁)选项,它可以为包含和排除采用多个分支标签:
git log -p branch_A ^branch_B ^branch_C
但是,这并没有给出像git diff这样的变化的单一摘要,而是为分支A中包含但不在分支B或C中的每个提交单独进行更改。
虽然不太理想地了解分支A引入的更改的整体情况,但是当您尝试从分支A中挑选更改时,这个提交提交摘要可能会更有用。