我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
当前回答
分离的HEAD表示您当前不在任何分支上。如果您想保留当前的更改并简单地创建一个新分支,您可以这样做:
git commit -m "your commit message"
git checkout -b new_branch
之后,您可能希望将此新分支与其他分支合并。git“a dog”命令总是有用的:
git log --all --decorate --oneline --graph
其他回答
为了进一步澄清@Philippe Gerber的答案,这里是:
在樱桃采摘之前,在这种情况下,需要一个git结账大师。此外,它只需要在分离头中提交。
吉特告诉我怎么做。
如果键入:
git checkout <some-commit_number>
保存状态
git add .
git commit -m "some message"
然后:
git push origin HEAD:<name-of-remote-branch>
补充@ralphteninija的答案。如果使用git checkout master后收到此消息:
请在切换分支之前提交更改或将其隐藏。正在中止
然后,您可以简单地使用-f标志强制签出,如下所示:
git checkout -f master
显然,这将导致丢失在分离模式中所做的所有更改。所以使用时要小心。
意识到我有一个超然的头脑,却不知道我是如何做到的(就像三次提交一样),我还发现尝试合并、重基或樱桃选择会引发数百次合并冲突,所以我采取了不同的方法:
(假设一切都已完成(工作树“干净”))保存我的提交消息:gitlog>/tmp/log保存我的工作树:mkdir/tmp/backup&&cp-a all_my files_and_directories/tmp/backup还原到master:git checkout master删除所有工作文件和目录:rm。。。使用备份:cp-a/tmp/backup/。gitadd和gitcommit使用保存的/tmp/log中的消息,可能使用不同的文件子集重复它。。。
缺点是,如果一个文件在master之后多次更改,则会丢失提交历史记录,但最终我有了一个干净的master。
分离的头意味着你没有正确地签出你的分支,或者你刚刚签出了一个提交。
如果您遇到这样的问题,请首先隐藏本地更改,这样您就不会丢失更改。
之后。。。使用以下命令签出所需的分支:
假设您想要分支MyOriginalBranch:
git checkout-b someName origin/MyOriginalBranch