我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于

svn up .

使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站

git checkout HEAD^ src/

(src是包含已删除文件的目录)。

现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?


当前回答

通常HEAD指向分支。当它不是指向分支,而是指向像69e51这样的提交散列时,这意味着你有一个分离的HEAD。你需要指出两个分支来解决这个问题。你可以做两件事来解决它。

git checkout other_branch//当您需要提交哈希中的代码时不可能创建一个新分支,并将提交哈希指向新创建的分支。

HEAD必须指向分支,而不是提交哈希是黄金法则。

其他回答

分离头部是指:

你不再在树枝上,您已在历史记录中检出一次提交

如果没有更改:可以通过应用以下命令切换到master

  git checkout master

如果您有要保留的更改:

在分离HEAD的情况下,提交工作正常,除非没有命名分支得到更新。若要使用已提交的更改更新主分支,请在您所在的位置创建一个临时分支(这样,临时分支将具有您在分离的HEAD中所做的所有已提交更改),然后切换到主分支并将临时分支与主分支合并。

git branch  temp
git checkout master
git merge temp

这对我有用,它将为分离的头部分配一个新分支:

git checkout new_branch_name detached_head_garbage_name

通常HEAD指向分支。当它不是指向分支,而是指向像69e51这样的提交散列时,这意味着你有一个分离的HEAD。你需要指出两个分支来解决这个问题。你可以做两件事来解决它。

git checkout other_branch//当您需要提交哈希中的代码时不可能创建一个新分支,并将提交哈希指向新创建的分支。

HEAD必须指向分支,而不是提交哈希是黄金法则。

处于“分离头部”意味着head指的是特定的未命名提交(与命名分支相对)(cf:https://git-scm.com/docs/git-checkout部分分离的头部)。实际上,这意味着您签出了一个提交,但没有与之关联的分支名称。

您可以选择只创建与提交相关联的新分支

gitbranch新的分支名称。

这允许您将当前状态保存在名为new branch name的新分支中,而不再处于分离的头部状态。

或者,如果您希望返回到以前的状态,则需要选择之前选择的分支

git结帐@{-1}

不创建临时分支的解决方案。

如何退出(“修复”)分离的HEAD状态,当您已经在该模式中更改了某些内容,并且(可选)想要保存更改时:

提交要保留的更改。如果您想接管在分离HEAD状态下所做的任何更改,请提交它们。喜欢:gitcommit-a-m“您的提交消息”放弃不想保留的更改。硬重置将丢弃您在分离HEAD状态下所做的任何未提交的更改:git重置--硬(如果没有这一点,步骤3将失败,抱怨分离的HEAD中修改了未提交的文件。)查看您的分支。通过检查之前处理的分支来退出分离的HEAD状态,例如:切换到主分支接管你的承诺。现在,您可以通过樱桃采摘来接管在分离HEAD状态下所做的提交,如我对另一个问题的回答所示。数字刷新gitcherry-pick<hash1><hash2><hash3>…