Why did my Git repo enter a detached HEAD state?
我今天最终得到了一个独立的头,同样的问题如下所述:git push说一切都是最新的,即使我有本地更改
据我所知,我没有做任何与众不同的事情,只是从我当地的回购中提交和推送。
那我怎么最终得到
任何不是你的某个分支名称的提交签出都会让你获得一个独立的HEAD。代表分支尖端的SHA1仍会提供分离的HEAD。只有签出本地分支名称才能避免该模式。
请参阅使用分离的HEAD进行提交
When HEAD is detached, commits work like normal, except no named branch gets updated. (You can think of this as an anonymous branch.)
例如,如果您在没有先跟踪它的情况下签出"远程分支",则最终可以使用分离的HEAD。
看到git:switch分支没有分离头
我刚刚意外地复制了这个:
列出远程分支
1 2 3 | git branch -r origin/Feature/f1234 origin/master |
我想在本地签出一个,所以我剪贴:
1 | git checkout origin/Feature/f1234 |
普雷斯托!独立的HEAD状态
1 | You are in 'detached HEAD' state. [...]) |
解决方案#1:
检查时,不要在我的分支规范的前面包含
1 | git checkout Feature/f1234 |
解决方案#2:
添加
尝试
1 | git reflog |
这将为您提供HEAD和分支指针的历史记录
在过去的地方。
例如:
88ea06b HEAD @ {0}:checkout:从DEVELOPMENT转移到remotes / origin / SomeNiceFeature
e47bf80 HEAD @ {1}:拉动原点开发:快进
这个列表的顶部是一个可能会遇到DETACHED HEAD的人
州...检查远程跟踪分支。
如果您尝试撤消通过重新签出文件所做的更改而不是完全正确地使用语法,则很容易发生这种情况。
你可以查看
如果您有一个名为与分支相同的标记,则会发生这种情况。
示例:如果"release / 0.1"是标签名称,那么
1 | git checkout release/0.1 |
在"释放/ 0.1"处生成分离的HEAD。如果您希望release / 0.1成为分支名称,那么您会感到困惑。
一个简单的偶然方法是将
试试这个:
1 2 3 4 5 | git init touch Readme.md git add Readme.md git commit git checkout head |
这使
1 2 3 4 5 6 7 8 9 10 11 12 | Note: checking out 'head'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 9354043... Readme |
进入git分离头状态的另一种方法是尝试提交到远程分支。就像是:
1 2 3 4 | git fetch git checkout origin/foo vi bar git commit -a -m 'changed bar' |
请注意,如果您这样做,任何进一步检查origin / foo的尝试都会让您回到分离头状态!
解决方案是创建自己的本地foo分支,跟踪origin / foo,然后选择push。
这可能与你原来的问题无关,但是这个页面在google点击率很高的"git detached head",这个场景严重缺乏记录。
当您签出提交
任何分支或标记无法访问的提交将在30天后被垃圾收集并从存储库中删除。
解决此问题的另一种方法是为新创建的提交和结帐创建一个新分支。
本文说明了如何进入分离的HEAD状态。