Git 什么';s还原与还原之间的差异<;散列>;和还原<;头>;?
我已将3个提交推送到我的存储库Git 什么';s还原与还原之间的差异<;散列>;和还原<;头>;?,git,github,revert,git-revert,Git,Github,Revert,Git Revert,我已将3个提交推送到我的存储库 委员会3 委员会2 委员会1 因此,如果我尝试使用命令git revert commit2Hash还原Commit2,它将发出警报,以便在合并之前解决冲突 但是,如果我尝试使用命令git revert HEAD~1还原Commit2,它将直接还原Commit2,而不会给我任何冲突 请问,为什么会发生这种情况?HEAD~0是您的最新提交(简称HEAD) HEAD~2表示从零开始第二次提交计数的哈希值 因此,键入git revert HEAD~2您正试图还原提交1
- 委员会3
- 委员会2
- 委员会1
git revert commit2Hash
还原Commit2,它将发出警报,以便在合并之前解决冲突
但是,如果我尝试使用命令git revert HEAD~1
还原Commit2,它将直接还原Commit2,而不会给我任何冲突
请问,为什么会发生这种情况?
HEAD~0
是您的最新提交(简称HEAD
)
HEAD~2
表示从零开始第二次提交计数的哈希值
因此,键入
git revert HEAD~2
您正试图还原提交1。这就是区别。HEAD~0
是您最近的提交(也就是简单的HEAD
)
HEAD~2
表示从零开始第二次提交计数的哈希值
因此,键入
git revert HEAD~2
您正试图还原提交1。这就是区别。没有--graph
的git log
的输出总是线性的,但是真实的历史可能是平行的。当打印git日志时
commit3
commit2
commit1
HEAD~1
可以等同于commit1
而不是commit2
。使用git log--oneline--graph--decoration
查看真实的历史记录。当commit2
和commit1
发生分歧,并且commit3
是合并提交时,就会发生这种情况。没有--graph
的git log
的输出总是线性的,但实际的历史可能是并行的。当打印git日志时
commit3
commit2
commit1
HEAD~1
可以等同于commit1
而不是commit2
。使用git log--oneline--graph--decoration
查看真实的历史记录。当commit2
和commit1
发生分歧,并且commit3
是一个合并提交时,就会发生这种情况。因为HEAD~2
指向
在您的示例中,在将HEAD~2
更正为HEAD~1
之后:这两个引用现在指向同一事物。这两种语法(HEAD~1
和
)之间没有任何区别。请用一个干净的示例再次检查,您将看到两个还原的行为完全相同。因为在您的示例中,HEAD~2
指向
,在您将HEAD~2
更正为HEAD~1
后:两个引用现在指向同一事物。这两种语法(HEAD~1
和
)之间没有任何区别。请仔细检查一个干净的例子,你会发现两个还原行为完全相同。谢谢你的建议。我把我的帖子编辑成头像~1。我的问题是:D@RenzoRodrigues在遇到合并冲突后,您是否执行了git revert--abort?该命令将中止还原,对吗?我想了解使用hash而不是head时在幕后会发生什么。我只是找到了这个链接并进行了解释。但仍有一些疑问@是的,你是对的。我只是想确认你没有犯错误。正确的场景意味着在尝试通过哈希还原之前中止第一个合并冲突(使用哈希时)。因为我看到了在解决合并冲突的同时成功中止commit1的可能性。请您提供一些日志、状态和复制步骤,谢谢您的建议。我把我的帖子编辑成头像~1。我的问题是:D@RenzoRodrigues在遇到合并冲突后,您是否执行了git revert--abort?该命令将中止还原,对吗?我想了解使用hash而不是head时在幕后会发生什么。我只是找到了这个链接并进行了解释。但仍有一些疑问@是的,你是对的。我只是想确认你没有犯错误。正确的场景意味着在尝试通过哈希还原之前中止第一个合并冲突(使用哈希时)。因为我看到了在解决合并冲突的同时成功中止commit1的可能性。请提供一些日志、状态和复制步骤好吗?