我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
当前回答
这是我在意识到自己头脑清醒,已经做出了一些改变之后所做的事情。
我提交了更改。
$ git commit -m "..."
[detached HEAD 1fe56ad] ...
我记得提交的哈希值。然后我检查了我本该去的那家分店。
$ git checkout master
Switched to branch 'master'
最后,我将提交的更改应用于分支。
$ git cherry-pick 1fe56ad
[master 0b05f1e] ...
我认为这比创建一个临时分支要简单一些。
其他回答
当您处于分离头部的情况并创建了新文件时,首先确保将这些新文件添加到索引中,例如:
git add .
但是,如果您只更改或删除了现有文件,则可以通过以下方式同时添加(-a)和提交消息(-m):
git commit -a -m "my adjustment message"
然后,您可以简单地使用当前状态创建一个新分支:
git checkout -b new_branch_name
你将有一个新的分支,所有的调整都将在新分支中。然后,您可以根据需要继续推送到远程和/或签出/拉入/合并。
由于“分离的头状态”使您处于临时分支,所以只需使用git checkout,这将使您处于上一个分支。
不创建临时分支的解决方案。
如何退出(“修复”)分离的HEAD状态,当您已经在该模式中更改了某些内容,并且(可选)想要保存更改时:
提交要保留的更改。如果您想接管在分离HEAD状态下所做的任何更改,请提交它们。喜欢:gitcommit-a-m“您的提交消息”放弃不想保留的更改。硬重置将丢弃您在分离HEAD状态下所做的任何未提交的更改:git重置--硬(如果没有这一点,步骤3将失败,抱怨分离的HEAD中修改了未提交的文件。)查看您的分支。通过检查之前处理的分支来退出分离的HEAD状态,例如:切换到主分支接管你的承诺。现在,您可以通过樱桃采摘来接管在分离HEAD状态下所做的提交,如我对另一个问题的回答所示。数字刷新gitcherry-pick<hash1><hash2><hash3>…
补遗
如果您希望返回的分支是最后一次签出,则可以简单地使用checkout@{-1}。这将带您返回上一次结账。
此外,您可以将此命令别名为,例如,git global--config alias.prev,这样您只需键入git prev即可切换回上一个签出。
处于“分离头部”意味着head指的是特定的未命名提交(与命名分支相对)(cf:https://git-scm.com/docs/git-checkout部分分离的头部)。实际上,这意味着您签出了一个提交,但没有与之关联的分支名称。
您可以选择只创建与提交相关联的新分支
gitbranch新的分支名称。
这允许您将当前状态保存在名为new branch name的新分支中,而不再处于分离的头部状态。
或者,如果您希望返回到以前的状态,则需要选择之前选择的分支
git结帐@{-1}