【发布时间】:2017-07-20 07:23:00
【问题描述】:
我是 Git 新手,我正试图恢复到 SourceTree 中的先前提交。我右键单击要恢复的提交,然后单击结帐。它给了我一个提示,说我的工作副本将成为一个超然的头脑。这是什么意思,这是我应该避免的吗?
【问题讨论】:
-
您可以还原此提交,但通常更安全的做法是进行还原提交以撤消此提交。
标签: git bitbucket commit git-checkout revert
我是 Git 新手,我正试图恢复到 SourceTree 中的先前提交。我右键单击要恢复的提交,然后单击结帐。它给了我一个提示,说我的工作副本将成为一个超然的头脑。这是什么意思,这是我应该避免的吗?
【问题讨论】:
标签: git bitbucket commit git-checkout revert
这个问题似乎与 git 不完全相关,但特定于您正在使用的 git 客户端/提供程序(我怀疑是 bitbucket)。
我建议你使用命令行客户端,而不是 Web UI 来更好地学习 git。
在分离的头状态下,您所做的任何更改(和提交)都会从提交树中分离出来,您需要额外的工作才能将该提交放回提交树。通常我们不会对分离的头部状态进行更改,它用于重新排列提交树。但是在分离状态下还是值得尝试的。
【讨论】:
根据 Git-Tower 的文章:What's a "detached HEAD" in Git?
了解“结帐”的工作原理
使用“git checkout”命令,您可以确定您的哪个版本 你想从事的项目。然后 Git 将所有该修订版的 工作副本文件夹中的文件。
通常,您使用分支名称与“git checkout”进行通信
$ git checkout development不过,您也可以提供特定提交的 SHA1 哈希 而是:
$ git checkout 56a4e5c08 Note: checking out '56a4e5c08'. You are in 'detached HEAD' state...这个确切的状态 - 当一个特定的提交被签出而不是一个 分支 - 就是所谓的分离的 HEAD。
HEAD 分离的问题
Git 中的 HEAD 指针决定了你当前的工作版本(以及 从而放置在项目工作中的文件 目录)。通常,在签出正确的分支名称时,Git 当你创建一个新的时自动移动 HEAD 指针 犯罪。您将自动处于所选的最新提交 分支。
当您选择检查提交哈希时,Git 不会这样做 为你。结果是,当您进行更改并提交时 他们,这些更改不属于任何分支。这意味着他们可以 一旦您签出不同的修订版或分支,很容易迷路:不是 被记录在一个分支的上下文中,你没有可能 轻松访问该状态(除非您有出色的记忆力并且可以 记住那个新提交的提交哈希...)。
总结: 从 SourceTree,请签出到特定的分支,而不是签出到特定的提交。
【讨论】: