让我们对您的问题进行排序。
在我们开始之前,让我们先了解一些术语
Terminology
What is HEAD in depth
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 到当前提交 @ 的更改987654328@
其他示例:git revert HEAD 恢复上次提交 - 这没关系
在这种情况下,您提供的是 single 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