1

我有一个 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 视为合并提交的澄清。

4

1 回答 1

2

Linus Torvalds 可以比我更好地解释它

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

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

于 2013-07-18T04:48:13.143 回答