很显然,我已经看到了“ git revert”,而且我不相信它会帮助我。我将解释我想要什么以及为什么“ git revert”无济于事。
我为一些实验更改创建了一个PR(实际上是两个存储库中的一个),这些更改需要合并到主服务器并部署到我们的测试服务器。将PR部署到测试服务器是不切实际的。这些公关现已合并。在接下来的几天中,我们将对这些更改进行一些测试。
但是,这些实验性更改不应发布。合并PR后,我发现今天晚上或明天早上将从master上删除下一个发行分支。剪切后,我将有时间还原release分支中的更改,但是如果我在剪切分支之前不还原更改,我肯定会这样做。
我们使用基于主干的开发,所有更改都进入PR,然后合并到master中,然后将这些PR的提交挑选到release分支中(用于发布后在发给release分支的更改)分支被剪切)。我们从发布分支创建一个功能分支,将其分支,然后将其合并到发布分支。
无论是还原发行分支之前还是之后还原更改,我都必须构造一个功能分支,并还原特定的更改。幸运的是,更改的数量很少,因此如果需要,我可以手动进行。我本来希望使用“ git revert”,但是据我了解,检出master分支后,我将不得不使用“ git revert”。这样会将提交内容放入我的本地存储库的master分支中,因为它不在功能分支中,所以我不能推送远程文件。
我真的很想“ git revert”来创建提交,以恢复master分支上的特定提交,但是将它们放入我指定的功能分支中。我不相信它能做到。
有什么方法可以在本地master分支上使用“ git revert”,然后将这些提交移至Feature分支吗?
一旦恢复了这些更改,我就必须创建另一个PR来恢复还原的提交,并返回到我需要测试的实验性更改。
如何使用git正确管理此过程,而不是手动进行这些更改?
答案 0 :(得分:0)
由于您正在使用许多分支机构来解释问题,因此我不确定我是否能正确遵循。如果我理解正确,您就创建了一个功能分支,它已经合并到master了。您想创建其他PR来还原那些更改吗?您可以从master分支开始,并要求还原组成原始PR的所有修订版本都没有任何问题....然后合并以掌握新的PR,原始PR消失了。原始修订将保留在主版本中。
如果这是您想要的,我会不做任何麻烦而无需还原。
git checkout revision-from-master-where-first-pr-started
git reset --soft first-pr-branch
# at this point all changes required to revert the first PR are in index
git commit -m 'reverting feature X'
# created a single revision to revert everything
git rebase --onto master HEAD~ HEAD # moved that revision to the tip of master
git checkout -b feature-reversal
# the reversal is in the branch you just created, a single revision