恢复git中的一系列提交 [英] Revert a range of commits in git

查看:213
本文介绍了恢复git中的一系列提交的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎样才能在git中恢复一系列的提交?从查看 gitrevisions 文档,我看不到指定我需要的范围。例如:

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

我想要做相当于:

  git回复BD 

结果如下:

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

其中F包含与BD相反的值。

解决方案

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



仅在Git1.7.2 +中支持多个提交使用还原多次回滚到旧提交。了解更多详情。

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






正如 OP Alex Spurling 评论中的报道:

升级到1.7.4可以正常工作。

要回答我自己的问题,这是我正在寻找的语法:

  git revert B ^ .. D 

B ^ 表示B的第一个父提交:允许在回复中包含 B

请参阅 git rev-parse 指定修订部分,其中包括 < rev> ^ ,例如 HEAD ^ 语法:请参阅插入符号( ^ )字符是什么意思?



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

Henrik N 评论

 git revert OLDER_COMMIT ^ .. NEWER_COMMIT 

如下所示,您可以立即恢复而无需立即提交:

  git revert -n OLDER_COMMIT ^ .. NEWER_COMMIT 
git commit -m将OLDER_COMMIT恢复为NEWER_COMMIT


How can I revert a range of commits in git? From looking at the gitrevisions documentation, I cannot see how to specify the range I need. For example:

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

I want to do the equivalent of:

git revert B-D

where the result would be:

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

where F contains the reverse of B-D inclusive.

解决方案

What version of Git are you using?

Reverting multiple commits in only supported in Git1.7.2+: see "Rollback to an old commit using revert multiple times." for more details.
The current git revert man page is only for the current Git version (1.7.4+).


As the OP Alex Spurling reports in the comments:

Upgrading to 1.7.4 works fine.
To answer my own question, this is the syntax I was looking for:

git revert B^..D 

B^ means "the first parent commit of B": that allows to include B in the revert.
See "git rev-parse SPECIFYING REVISIONS section" which include the <rev>^, e.g. HEAD^ syntax: see more at "What does the caret (^) character mean?")

Note that each reverted commit is committed separately.

Henrik N clarifies in the comments:

git revert OLDER_COMMIT^..NEWER_COMMIT

As shown below, you can revert without committing right away:

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

这篇关于恢复git中的一系列提交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆