1

我在 git 中有以下历史记录

A-B-C-D-E-F

我想回滚我在提交 E 中所做的更改,但想要我在提交 F 中所做的更改。所以我做了一个git rebase这样的

git rebase -i D

并且只选择了提交 F 而忽略了提交 E。我的历史现在看起来像

A-B-C-D-F

但是,我想要做的是,回滚在提交 E 中所做的更改,但仍然在历史记录中保持 E 被添加然后被删除。像这样的东西

A-B-C-D-E-F-E1

其中 E1 是一个提交,它恢复提交 E 所做的更改。

如何在git中做到这一点?

4

3 回答 3

4

git revert $SHA_FOR_E将做出一个“与”提交 E 相反的新提交。

从手册页

给定一个或多个现有提交,还原相关补丁引入的更改,并记录一些记录它们的新提交。

于 2013-05-06T15:04:15.620 回答
2

您使用还原命令。这将创建一个提交,它与提供的 SHA 相反。

git revert <SHA E>

于 2013-05-06T15:04:47.780 回答
2

我不认为rebase这是要走的路。我的第一个建议是使用revert

git revert E

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

另一种选择是只反转补丁。

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

将扭转在E.

于 2013-05-06T15:06:29.820 回答