我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的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

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

其他回答

补充@ralphteninija的答案。如果使用git checkout master后收到此消息:

请在切换分支之前提交更改或将其隐藏。正在中止

然后,您可以简单地使用-f标志强制签出,如下所示:

git checkout -f master

显然,这将导致丢失在分离模式中所做的所有更改。所以使用时要小心。

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

摘自:

如何处理在分离的头脑中做出的承诺

分离的头部意味着您不再在分支上,您已经在历史中签出了一个提交(在本例中,提交是head之前的提交,即head^)。

如果要删除与分离的HEAD关联的更改

你只需要检查你所在的分行,例如。

git checkout master

下次更改文件并希望将其恢复到索引中的状态时,不要先删除该文件,只需执行以下操作

git checkout -- path/to/foo

这将把文件foo恢复到索引中的状态。

如果您希望将更改与分离的HEAD保持关联

运行gitbranchtmp-这将在名为tmp的新分支中保存更改。运行git签出主机如果您想将所做的更改合并到master中,请从master分支运行gitmergetmp。运行git checkout master后,您应该在master分支上。

分离的头意味着你没有正确地签出你的分支,或者你刚刚签出了一个提交。

如果您遇到这样的问题,请首先隐藏本地更改,这样您就不会丢失更改。

之后。。。使用以下命令签出所需的分支:

假设您想要分支MyOriginalBranch:

git checkout-b someName origin/MyOriginalBranch