2017-05-26 95 views
4

想象一下下面的场景:如何“反转”以前恢复的提交?

不应该被合并到集成分支的代码需要被还原。但是,您不能重置,因为自那以后发生了其他提交。此外,您可能希望在稍后重新应用该提交。

使用git revert可以很容易地应用反向提交。但是,当我们想要提交更改时(例如从功能分支),会发生什么?你是否重新合并分支?这是否会起作用,因为技术上代码已经合并了?

当你终于准备接受合并时,你会做什么?

回答

6

只需恢复恢复提交。

git revert HASH_OF_REVERT_COMMIT 
+0

这实际上是否有效?大声笑。如果是这样,那么简单。 –

0

如果我正确理解您的方案,您想恢复合并到分支的分支。


在这种情况下,例如,

git <your_branch> merged to master, pushed to origin/master. 

要恢复提交你推到原点什么。

还原合并提交/单提交。

这将恢复单个提交并还用于恢复合并提交。

实施例:

git revert -m 1 <commit-ID> 
Finished one revert. 
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'" 
10 files changed, 0 insertions(+), 12 deletions(-) 

GIT中复归将介绍新的提交。您需要提交更改并将其推送到原点/主控或相应的原点/分支。

还原的还原

如果你决定重新合并的东西,它的回归是固定的?

例子:

git revert <commit-ID> 
Finished one revert. 
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'" 
10 files changed, 12 insertions(+), 0 deletions(-) 

这样做后,你固定推出的回归,这是在分支,前恢复了。稍后,您可以将该分支合并到起源中

+0

更详细的解释。我们有一个开发分支,它具有来自功能分支的所有合并更改。我们希望发布一个版本,但其中一些提交者有决心要么有问题,要么只是不想发布。显然,我们可以选择我们想要的提交,但是我不喜欢那样,因为它没有出现在历史图中,所以另一种选择是将开发与发布合并,并且还原我们不想要的提交。现在,后来我们想要发布这些提交。 –

+0

所以也许,是的,它就像恢复恢复提交一样简单。 –

+0

那么,如果你想从开发分支发布,在这种情况下,如果你想恢复15次提交呢?在那种情况下,它有点乏味。但是,回复会在分支中添加一个额外的提交。也许,您可以尝试将特定的提交合并到您的发布分支,但是当您执行还原时,这将具有相同的工作量。直截了当的方式是恢复你的情况下的恢复提交,如果它不是更多的提交。 – LethalProgrammer