Git 回滚以前的提交,但仍保留历史记录

Git 回滚以前的提交,但仍保留历史记录,git,git-rebase,Git,Git Rebase,我在git中有以下历史记录 A-B-C-D-E-F 我想回滚我在commit E中所做的更改,但想回滚我在commit F中所做的更改。因此,我像这样做了一个git-rebase git rebase -i D A-B-C-D-E-F-E1 只选择了提交F,忽略了提交E。我的历史记录现在看起来像 A-B-C-D-F 但是,我想做的是,回滚在commit E中所做的更改,但仍然在历史记录中保留E是被添加然后被删除的。像这样的 git rebase -i D A-B-C-D-E-F-E1

我在git中有以下历史记录

A-B-C-D-E-F
我想回滚我在commit E中所做的更改,但想回滚我在commit F中所做的更改。因此,我像这样做了一个
git-rebase

git rebase -i D
A-B-C-D-E-F-E1
只选择了提交F,忽略了提交E。我的历史记录现在看起来像

A-B-C-D-F
但是,我想做的是,回滚在commit E中所做的更改,但仍然在历史记录中保留E是被添加然后被删除的。像这样的

git rebase -i D
A-B-C-D-E-F-E1
其中E1是一个提交,它还原提交E所做的更改


如何在git中实现这一点?

git revert$SHA_FOR_E
将生成一个新的提交,与提交E相反

:

给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录这些更改的新提交


git revert$SHA_FOR_E
将使新的提交成为“提交E”的“反面”

:

给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录这些更改的新提交

你用这个。这将创建一个与提供的SHA相反的提交

git revert

您可以使用。这将创建一个与提供的SHA相反的提交


git revert

我不认为
rebase
是一条可行的道路。我的第一个建议是使用

这将创建一个新的提交还原,以恢复已应用的E

另一种选择是将补丁反转

git show E | patch -R -p1 && git commit .

将扭转在
E

中所做的事情,我认为
rebase
不是一个好办法。我的第一个建议是使用

这将创建一个新的提交还原,以恢复已应用的E

另一种选择是将补丁反转

git show E | patch -R -p1 && git commit .

将反转在
E

中所做的操作,谢谢。我读到了关于
恢复
,但有些人对
重新基础
感到困惑,谢谢。我读到了关于
还原
,但有些人怎么会被
重设基础