我是Git的新手,我试图恢复到SourceTree中的先前提交。我右键单击了我要恢复的提交,然后点击结帐。它给了我一个提示,说我的工作副本将成为一个独立的头。这是什么意思,这是我应该避免的?
答案 0 :(得分:4)
根据Per 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,请结账到特定的分支,而不是检查特定提交。
答案 1 :(得分:0)
这个问题似乎与git并不完全相关,但是特定于您正在使用的git客户端/提供程序(我怀疑是bitbucket)。
我建议您使用命令行客户端,而不是Web UI来更好地学习git。
在分离头状态中,无论您所做的任何更改(和提交)都与提交树分离,您还需要额外的工作才能将该提交放回提交树。通常我们不会在分离头状态中进行更改,它用于重新安排提交树。但值得在超然状态下进行试验。
答案 2 :(得分:0)