2017-09-11 223 views
0

在git中,是否可以通过单次提交恢复一系列提交?我有以下的历史,从中我想要恢复提交B和CGit:如何通过一次提交恢复一系列提交

E (HEAD) 
| 
D 
| 
C 
| 
B 
| 
A 

可以这样用reset命令来完成,因为它有可能恢复所有通过硬复位以下提交到目标承诺,和软重置回头?

+0

我认为您正在寻找rebase,而不是重置 –

+0

不,我不会不想重写历史。我想创建一个新的提交,它撤消了提交系列提交的更改 –

+0

这就是所谓的重写历史。看看互动式底牌 –

回答

4

你可以在单独的提交中恢复多个提交,然后压缩成一个?

这里真正的问题是为什么你想在一次单独提交中恢复所有内容 - 在单独的单独分支中单独提交它们会更清楚。

1

是的,使用git revert -n(在每次提交被撤销)后面跟着git commit。你会得到一个具有撤销多个提交效果的大提交。然而,这并不是一个好主意:很难说出已经恢复的原因以及原因。 (另一方面,恢复许多小提交也很少是一个好主意,因此在某些情况下,您必须选择哪种方法是最不好的。)