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

svn up .

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

git checkout HEAD^ src/

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

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


当前回答

我想保留我的更改,所以,我只是在做。。。

git add .
git commit -m "Title" -m "Description"
(so i have a commit now example: 123abc)
git checkout YOURCURRENTBRANCH
git merge 123abc
git push TOYOURCURRENTBRANCH

这对我很有用

其他回答

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

不创建临时分支的解决方案。

如何退出(“修复”)分离的HEAD状态,当您已经在该模式中更改了某些内容,并且(可选)想要保存更改时:

提交要保留的更改。如果您想接管在分离HEAD状态下所做的任何更改,请提交它们。喜欢:gitcommit-a-m“您的提交消息”放弃不想保留的更改。硬重置将丢弃您在分离HEAD状态下所做的任何未提交的更改:git重置--硬(如果没有这一点,步骤3将失败,抱怨分离的HEAD中修改了未提交的文件。)查看您的分支。通过检查之前处理的分支来退出分离的HEAD状态,例如:切换到主分支接管你的承诺。现在,您可以通过樱桃采摘来接管在分离HEAD状态下所做的提交,如我对另一个问题的回答所示。数字刷新gitcherry-pick<hash1><hash2><hash3>…

我也遇到过类似的情况。由于某种原因,我最终得到了一个分离的头部-我在与我认为我所在的分支相同的路径上进行了提交-例如,head是分支标记的子级,但由于某种原因分支标记停留在历史提交。。。可能是因为我推了??

它不会让我推动,因为我不被认为是在我认为我在的分支上。

我不想改变我的历史,也不想摘樱桃,我只是花了大约8周的时间在树枝上工作,所以重新设置了——这让我有点紧张!

解决方案只是执行以下操作:

git branch -f myStuckBranch HEAD
git checkout myStuckBranch

即使HEAD和myStuckBranch现在指向同一个对象,您仍需要执行签出,因为您仍然被认为处于分离的头部状态(而不是在分支上)

我不是git的专家(主要使用mercurial,这绝不会造成这种奇怪的情况),但我对这个命令的理解是,它只是说“将myStuckBranch更改为指向HEAD”。

我经常发现自己在获取后使用此命令合并来自master的更改,而不必交换我的工作目录,否则它会尝试使用旧的(无趣的)master版本:

git fetch
git branch -f master origin/master  -- err yeah don't just ignore what's been going on remotely - eg point my master at the real master
git merge master -- merge the changes into my local branch

必须一直手动执行这一操作有点烦人,但总比为了合并来自另一个分支的更改而更改工作目录要好。

我想保留我的更改,所以,我只是在做。。。

git add .
git commit -m "Title" -m "Description"
(so i have a commit now example: 123abc)
git checkout YOURCURRENTBRANCH
git merge 123abc
git push TOYOURCURRENTBRANCH

这对我很有用

吉特告诉我怎么做。

如果键入:

git checkout <some-commit_number>

保存状态

git add .
git commit -m "some message"

然后:

 git push origin HEAD:<name-of-remote-branch>