git revert -n master~5..master~2
将提交所做的更改从master(包含)中的 fifth
最后一次提交恢复到master(包含)
但我的观察显示出不同的东西 通话结束后:
git revert HEAD~1..HEAD
删除最后一次提交而不是前一次提交。
所以我说:
git revert -n master~5..master~2
将主要(包含)中第四次最后一次提交的提交所做的更改还原为master(包含)中的 second
最后一次提交。
其他示例: git revert HEAD
恢复上次提交 - 这没关系
但 git revert HEAD..
表示给定列表为空 - 我希望它还会恢复上一次提交,因为文档说左边界已包含在内。
我是对的吗?
答案 0 :(得分:1)
让我们在您的问题中做出一些命令。
在我们开始之前,我们有一些术语
Terminology
HEAD = Current commit
../ ... = Commit range (from ... to)
revert = Undo the given change
git revert -n master~5..master~2
强> 将提交所做的更改从master(包含)中的第五次提交恢复为master(包含)中的第三次提交
您正在使用范围。范围是 从...到 ,在您的情况下从5到2(不包括)。
git revert HEAD~1..HEAD
删除最后一次提交而不是上一次提交。
您正在告诉git:请恢复previous commit up to the last one
范围内的内容,以便撤消上次提交[不包括] HEAD~1
的更改,直至当前提交HEAD
其他示例:
git revert HEAD
恢复上次提交 - 这没关系
在这种情况下,您将提供单个 SHA-1(HEAD
),以便还原给定的提交。它与恢复历史上的任何其他提交相同。
# revert commit XYZ
git revert XYX
# revert the current commit (git will extract the HEAD SHA-1)
# (Again read the linked post above to fully understand what is HEAD)
git revert HEAD
但
git revert HEAD..
表示给定列表为空
如上所述,..
代表范围。您提供了列表中唯一的一侧(缺少/来取决于您如何看待它)
如果我们回到这里: git revert -n master~5..master~2
幕后发生的事情是这样的:
for (index=first SHA-1 to index= last SHA-1)
git revert SHA-1
git revert -n master~5..master~2 ->
git revert -master~5
git revert -master~4
git revert -master~3