Ale*_*ing 109 git range revert
如何在git中恢复一系列提交?从查看gitrevisions文档,我看不出如何指定我需要的范围.例如:
A -> B -> C -> D -> E -> HEAD
Run Code Online (Sandbox Code Playgroud)
我想做相同的:
git revert B-D
Run Code Online (Sandbox Code Playgroud)
结果将是:
A -> B -> C -> D -> E -> F -> HEAD
Run Code Online (Sandbox Code Playgroud)
其中F包含BD的反向.
Von*_*onC 148
你用的是什么版本的Git?
仅在Git1.7.2 +中支持还原多个提交:有关详细信息,请参阅" 使用revert多次回滚到旧提交. ".
当前的git revert
手册页仅适用于当前的 Git版本(1.7.4+).
正如OP Alex Spurling在评论中所述:
升级到1.7.4工作正常.
要回答我自己的问题,这是我正在寻找的语法:
git revert B^..D
Run Code Online (Sandbox Code Playgroud)
B^
表示"B的第一个父提交":允许包含B
在恢复中.
请参阅" git rev-parse
指定修订版本"部分,其中包括<rev>^
例如HEAD^
语法:请参阅" 插入符号(^
)字符的含义是什么意思? ")
请注意,每个还原的提交都是单独提交的.
git revert OLDER_COMMIT^..NEWER_COMMIT
Run Code Online (Sandbox Code Playgroud)
如下所示,您可以在不立即提交的情况下恢复:
git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"
Run Code Online (Sandbox Code Playgroud)
如果要在单次提交中将提交范围B还原为D(至少在git版本2中),则可以执行此操作
git revert -n B^..D
Run Code Online (Sandbox Code Playgroud)
这将从B的父提交(排除)提交到D提交(包含)的更改完成,但不会使用还原的更改创建任何提交.恢复仅修改工作树和索引.
不要忘记之后提交更改
git commit -m "revert commit range B to D"
Run Code Online (Sandbox Code Playgroud)
您还可以使用相同的方法在单个提交中还原多个不相关的提交.例如,还原B和D但不是C
git revert -n B D
git commit -m "Revert commits B and D"
Run Code Online (Sandbox Code Playgroud)
参考:https://www.kernel.org/pub/software/scm/git/docs/git-revert.html
做git revert OLDER_COMMIT^..NEWER_COMMIT
对我不起作用.
我用过git revert -n OLDER_COMMIT^..NEWER_COMMIT
,一切都很好.我正在使用git版本1.7.9.6
.
归档时间: |
|
查看次数: |
46215 次 |
最近记录: |