小编典典

恢复 git 中的一系列提交

all

如何恢复 git
中的一系列提交?通过查看gitrevisions文档,我看不到如何指定我需要的范围。例如:

A -> B -> C -> D -> E -> HEAD

我想做相当于:

git revert B-D

结果将是:

A -> B -> C -> D -> E -> F -> HEAD

其中 F 包含 BD 的倒数。


阅读 68

收藏
2022-08-27

共1个答案

小编典典

你使用的是什么版本的 Git?

当前git revert手册页仅适用于 当前 Git 版本(1.7.4+)。


正如在评论中报告的那样:

升级到 1.7.4 可以正常工作。
为了回答我自己的问题,这是我正在寻找的语法:

git revert B^..D

B^表示“B 的第一个父提交”:允许包含B在还原中。
请参阅“ git rev-parseSPECIFYING REVISIONS 部分”,其中包括<rev>^, 例如HEAD^语法:在“插入符号
( ^) 字符是什么意思?
”中查看更多信息)

请注意,每个还原的提交都是单独提交的。

在评论中澄清:

git revert OLDER_COMMIT^..NEWER_COMMIT

如下所示,您可以在不立即提交的情况下还原:

git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"
2022-08-27