我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
当前回答
分离的HEAD表示您当前不在任何分支上。如果您想保留当前的更改并简单地创建一个新分支,您可以这样做:
git commit -m "your commit message"
git checkout -b new_branch
之后,您可能希望将此新分支与其他分支合并。git“a dog”命令总是有用的:
git log --all --decorate --oneline --graph
其他回答
Git:您当前不在分支上。
Git不时显示:
将历史推到当前(分离的HEAD)立即状态,使用git push origin HEAD:<name of remote branch>
这意味着:
“HEAD没有分支”
要修复此问题,请运行2个命令:
gitbranch-f{{your_working_branch}}HEAD—将分支设置为头部git checkout{{your_working_branch}}--checkout==开关分支
如果您已经更改了不想丢失的文件,可以将其推送。我已经在分离模式下提交了它们,之后您可以移动到一个临时分支以稍后在master中集成。
git commit -m "....."
git branch my-temporary-work
git checkout master
git merge my-temporary-work
摘自:
如何处理在分离的头脑中做出的承诺
如果你做出了改变,然后意识到你是一个独立的人,你可以这样做:stash->checkout master->stash pop:
git stash
git checkout master # Fix the detached head state
git stash pop # Or for extra safety use 'stash apply' then later
# after fixing everything do 'stash drop'
您将拥有未提交的更改和正常的“附加”HEAD,就像什么都没有发生一样。
这种方法可能会丢弃部分提交历史记录,但如果旧主分支和当前状态的合并很棘手,或者您不介意丢失部分提交历史,则会更容易。
要简单地保持当前状态而不合并,请将当前分离的HEAD转换为主分支:
手动备份存储库,以防发生意外错误。提交您要保留的最后更改。创建一个临时分支(让我们将其命名为分离头),该分支将包含当前状态的文件:
git checkout -b detached-head
(a) 如果不需要保留主分支,请将其删除
git branch -D master
(b) 如果要保留,请重命名
git branch -M master old-master
将临时分支重命名为新的主分支
git branch -M detached-head master
资料来源:改编自Gary Lai的这篇Medium文章。
通常HEAD指向分支。当它不是指向分支,而是指向像69e51这样的提交散列时,这意味着你有一个分离的HEAD。你需要指出两个分支来解决这个问题。你可以做两件事来解决它。
git checkout other_branch//当您需要提交哈希中的代码时不可能创建一个新分支,并将提交哈希指向新创建的分支。
HEAD必须指向分支,而不是提交哈希是黄金法则。