比较两个没有中间提交的git分支即仅可从分支访问的提交

问题描述

假设我在同一提交上有一个git master分支和两个功能分支(feature1,feature2):

$price = get_post_meta( get_the_ID(),'_regular_price',true);
  if { ( ' $price' <= 1000 )
         tax class = ZERO RATES; 
    elseif
    {( ' $price' > 1001 && <7500 )
         tax class= GST 12% RATES; }
    else
    {( ' $price' > 7501)
        tax class = GST 18% RATES; }

现在,我通过对master所做的更改来对Feature2分支进行重新设置:

A1 -- A2 (master)
       \
        B1 -- B2 (feature1,feature2)

然后对feature2进行一些重构(A1 -- A2 -- A3 -- A4 -- A5 -- A6 (master) \ \ B1 -- B2 (feature1) B1 -- B2 (feature2) )和其他更改(B2'):

B3

我想做的是仅从两个功能分支(而不是master分支)的内容获取差异,以便查看在feature分支而不是master上重构和更改的内容。即我想获取A1 -- A2 -- A3 -- A4 -- A5 -- A6 (master) \ \ B1 -- B2 (feature1) B1 -- B2' -- B3 (feature2) B1 -- B2间的差异。在此期间,我不关心要掌握的更改。有cmd命令吗?

解决方法

据我所知,git diff命令仅比较显式内容,没有将多个补丁组合在一起的内置方法。

您可以做的是创建一个临时分支,然后创建要比较的内容:

# for example :
git checkout feature1
git checkout -b compare1
git rebase A6
git diff feature2

构建该内容的另一种方法是在A2 A6上应用补丁feature1,或在feature2上应用反向补丁:

git checkout feature1
git diff A2 A6 | git apply

# or
git checkout feature2
git diff A6 A2 | git apply

# after inspecting the diff : discard these changes
git checkout .