用git进行多分支差异?

时间:2015-01-13 16:59:36

标签: git branch diff

有一种简单的方法可以在git之间获得多个(两个以上)分支之间的差异吗? (有点像“章鱼差异”?)

情况是有一个分支(称为分支A),它是多个其他分支(称为B和C)的合并以及其他修改的结果。 (分支A与分支B不同,有多个本地修改,然后分支C合并,然后进行更多本地修改,然后更多本地修改和重新合并以包括B和C分支的更新。)

我想要做的是查看分支A特有的所有本地更改 - 也就是说,查看对分支A或分支C上没有的分支A所做的更改。

2 个答案:

答案 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中挑选更改时,这个提交提交摘要可能会更有用。

相关问题