Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 什么';s还原与还原之间的差异<;散列>;和还原<;头>;?_Git_Github_Revert_Git Revert - Fatal编程技术网

Git 什么';s还原与还原之间的差异<;散列>;和还原<;头>;?

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个提交推送到我的存储库

  • 委员会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的可能性。请提供一些日志、状态和复制步骤好吗?