合并后还原--squash

时间:2013-07-18 02:54:15

标签: git

我有一个webapp,其中一个新功能已合并到开发分支,并准备合并到master并从那里部署。这是一个相当复杂的功能,如果出现意外情况,我需要能够干净地恢复。

我正在计划这个:

git checkout master
git merge --squash develop
git commit -m 'Merged...etc'

一切都很简单直接。如果我确实需要回滚,我希望能够只做到这一点:

git checkout master
git revert HEAD

但是,如果有必要,我将需要在以后的日期中解决开发和重新合并的问题。我在git help revert中读到了这个:

  

恢复合并提交声明您永远不会希望合并带来的树更改。   因此,以后的合并只会带来由非祖先提交引入的树更改   之前恢复的合并

这表明我可能无法在以后重新合并相同的代码。或者使用--squash是否意味着这不被认为是合并提交(因为提交是一个单独的事务),我可以在将来重新合并。

所以我正在寻找一些关于这是否被git视为合并提交的澄清,或者 不

1 个答案:

答案 0 :(得分:2)

Linus Torvalds can explain it better than I

TL; DR:要在还原合并后合并更改,您需要还原还原(或者可能是不同的)。

那就是说,在你的情况下,你不会创建合并提交。合并提交有2个(或更多)父项。 git merge --squash && git commit将创建一个父级的提交。