我有一个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视为合并提交的澄清,或者 不
答案 0 :(得分:2)
Linus Torvalds can explain it better than I
TL; DR:要在还原合并后合并更改,您需要还原还原(或者可能是不同的)。
那就是说,在你的情况下,你不会创建合并提交。合并提交有2个(或更多)父项。 git merge --squash && git commit
将创建一个父级的提交。