我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
当前回答
当您处于分离头部的情况并创建了新文件时,首先确保将这些新文件添加到索引中,例如:
git add .
但是,如果您只更改或删除了现有文件,则可以通过以下方式同时添加(-a)和提交消息(-m):
git commit -a -m "my adjustment message"
然后,您可以简单地使用当前状态创建一个新分支:
git checkout -b new_branch_name
你将有一个新的分支,所有的调整都将在新分支中。然后,您可以根据需要继续推送到远程和/或签出/拉入/合并。
其他回答
由于“分离的头状态”使您处于临时分支,所以只需使用git checkout,这将使您处于上一个分支。
这是我在意识到自己头脑清醒,已经做出了一些改变之后所做的事情。
我提交了更改。
$ git commit -m "..."
[detached HEAD 1fe56ad] ...
我记得提交的哈希值。然后我检查了我本该去的那家分店。
$ git checkout master
Switched to branch 'master'
最后,我将提交的更改应用于分支。
$ git cherry-pick 1fe56ad
[master 0b05f1e] ...
我认为这比创建一个临时分支要简单一些。
为了进一步澄清@Philippe Gerber的答案,这里是:
在樱桃采摘之前,在这种情况下,需要一个git结账大师。此外,它只需要在分离头中提交。
如果你做出了改变,然后意识到你是一个独立的人,你可以这样做: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,就像什么都没有发生一样。
如果您已经更改了不想丢失的文件,可以将其推送。我已经在分离模式下提交了它们,之后您可以移动到一个临时分支以稍后在master中集成。
git commit -m "....."
git branch my-temporary-work
git checkout master
git merge my-temporary-work
摘自:
如何处理在分离的头脑中做出的承诺