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

svn up .

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

git checkout HEAD^ src/

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

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


当前回答

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==开关分支

其他回答

如果你做出了改变,然后意识到你是一个独立的人,你可以这样做: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,就像什么都没有发生一样。

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==开关分支

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

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

gitbranch新的分支名称。

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

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

git结帐@{-1}

分离头部是指:

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

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

  git checkout master

如果您有要保留的更改:

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

git branch  temp
git checkout master
git merge temp

当您处于分离头部的情况并创建了新文件时,首先确保将这些新文件添加到索引中,例如:

git add .

但是,如果您只更改或删除了现有文件,则可以通过以下方式同时添加(-a)和提交消息(-m):

git commit -a -m "my adjustment message"

然后,您可以简单地使用当前状态创建一个新分支:

git checkout -b new_branch_name

你将有一个新的分支,所有的调整都将在新分支中。然后,您可以根据需要继续推送到远程和/或签出/拉入/合并。