如何判断git merge是否可快速转发

时间:2017-06-27 21:58:49

标签: git github continuous-integration continuous-deployment

我有一个功能分支,我通过Github PR合并(git merge --no-ff)。

我喜欢的是能够判断合并在合并时是否可以快速转发。基本上,我的所有测试都在功能分支上运行。如果它在基本相同的代码上运行,我想跳过在主分支上运行我的测试。

如果在开发功能分支时向主分支添加了提交,则合并应该导致我的测试运行。用git可以吗?

3 个答案:

答案 0 :(得分:1)

要知道修订版是否可以从任何给定点快进,您可以尝试使用git branch --contains。如果分支A可以从B点快进,那么分支A应该列在git branch --contains point-B上(如果分支A在远程上,则使用-r)。

答案 1 :(得分:0)

git merge的输出会告诉您何时使用快进合并。您可以保留两个分支的本地版本,将本地功能分支合并到本地主分支中,并查看输出。

答案 2 :(得分:0)

你可以逐字测试一些现有的合并提交 M (其中 M 是哈希ID) 是否是快进操作通过测试M^1是否是M^2的祖先:

...--o--o--M^1---M--...
      \         /
       o--o--M^2

(此合并不能快进,因为 M 的第一个父项M^1不是* M的第二个父项的祖先 VS:

...--M^1-----------M--...
        \         /
         o--o--M^2

(这种合并是快速前进的,但被迫成为真正的合并)。

但是,对于测试跳过目的,比较与M^1 M 相关联的树可能更简单。也就是说,即使存在真正的合并,它也可能是一种无效合并"。树比较会发现这一点,而祖先测试则不会(你进行不必要的测试)。