修复Git分离的头部?

我在存储库中做了一些工作,发现一个文件有本地更改。 我不再需要它们,所以我删除了该文件,认为我只需签出新的副本即可。 我想做相当于git的

svn up .

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

git checkout HEAD^ src/

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

现在我发现我有一个独立的头。 我不知道那是什么。 我如何撤消?


分离的头意味着你不再在分支上,你已经在历史中签出了一个单独的提交(在这种情况下是在HEAD之前的提交,即HEAD ^)。

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

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

git checkout master

下一次你改变了一个文件并且想把它恢复到它在索引中的状态时,不要先删除文件,只要

git checkout -- path/to/foo

这会将文件foo恢复到它在索引中的状态。

如果您想保留与分离的HEAD相关联的更改

  • 运行git log -n 1 ; 这将在分离的HEAD上显示最近的提交。 复制并粘贴提交哈希。
  • 运行git checkout master
  • 运行git branch tmp <commit-hash> 。 这会将您的更改保存在名为tmp的新分支中。
  • 如果您想将您所做的更改git merge tmpmaster ,请从master分支运行git merge tmp 。 运行git checkout master后,您应该在master分支上。

  • 如果您更改了不想丢失的文件,可以推送它们。 我已经将它们提交到分离模式,之后您可以移动到临时分支,以便稍后集成到主模块中。

    git commit -m "....."
    git branch my-temporary-work
    git checkout master
    git merge my-temporary-work
    

    摘自:

    如何处理独立头脑中的犯下行为


    如果您已经在此模式下更改了某些内容并可选择保存更改,如何退出(“修复”)分离的HEAD状态。

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

  • 提交您想要保留的更改。 如果您想要接管您在分离的HEAD状态下所做的任何更改,请提交它们。 喜欢:

    git commit -a -m "your commit message"
    
  • 放弃您不想保留的更改。 硬重置将丢弃您在分离的HEAD状态下所做的任何未提交的更改:

    git reset --hard
    

    (如果没有这个,步骤3将会失败,抱怨在分离的HEAD中修改了未提交的文件。)

  • 检查你的分支。 通过检出您之前工作的分支退出分离的HEAD状态,例如:

    git checkout master
    
  • 接管你的提交。 您现在可以通过樱桃采摘来接管您在分离的HEAD状态下进行的提交,如我对另一个问题的回答所示。

    git reflog
    git cherry-pick <hash1> <hash2> <hash3> …
    
  • 链接地址: http://www.djcxy.com/p/4015.html

    上一篇: Fix a Git detached head?

    下一篇: How to stop tracking and ignore changes to a file in Git?