代码之家  ›  专栏  ›  技术社区  ›  Alireza Noori

修复合并冲突后git“当前不在任何分支上”

git
  •  5
  • Alireza Noori  · 技术社区  · 12 年前

    我试着做出改变。在经历了很多问题和冲突之后,我设法解决了每一个问题。然而,我提交的代码目前不在任何分支上(作为 git status 显示)。我该如何解决这个问题?我尝试了几种解决方案,但没有一种对我有效。我尝试了命令 git merge 但它说它已经是最新的了。

    使现代化

    的结果 git log --all --graph --oneline --decorate 是:

    * 7833c31 (HEAD) Changed LI tool
    * c205a25 Fixed merge conflicts
    *   7b10e48 (vsproj/master, master) 4-7-2013
    |\  
    | * cc51cb0 3/9/2013
    | * 62ea718 Updated mail and added barcode
    | * 9a3573a 1-7-2013
    | * 96ded0e Updated ExamsPrinter
    | * be6638a 12-25-2012
    | * 89cba4b Added HTML to PDF and updated Email app
    | * fa96aeb Updates
    | * 9ffcfcc Changes in CloudDownloader, LinkedIn & Twitter apps
    | * 609c555 Added README file
    | * bf8a344 Started implementing CloudDownloader, created FileDownloader, updated FacebookInfoBot
    | * c3556ce First Commit
    * 3a59cd5 4-7-2013
    
    3 回复  |  直到 5 年前
        1
  •  10
  •   kan    12 年前

    不确定发生了什么,但您可以通过创建一个新分支然后合并它来轻松修复它:

    git branch lost_changes
    git checkout master
    git merge lost_changes
    
        2
  •  2
  •   jthill    12 年前

    所以你可以从你的历史中看到这里发生了什么。你进行了合并,生产

    *   7b10e48 (vsproj/master, master) 4-7-2013
    

    然后在明确断开您的签出与您提交的主分支提示%1的连接后

    * c205a25 Fixed merge conflicts
    

    * 7833c31 (HEAD) Changed LI tool
    

    所以,为了让你当前的结账成为你所做的主要分支提示

    git checkout -B master HEAD
    

    这看起来是最简单的恢复。

    为什么要明确提交合并冲突?你必须告诉git你已经解决了所有问题 git add 输入正确的内容),然后它将接受提交。

    %1:我得到无参考“分离”结账的通常方式是 git checkout HEAD@{1} ,有很多方法,git对分支技巧相当随意,所以当你对这里发生的事情感到满意后,你会这样做吗。

        3
  •  0
  •   GoZoner    12 年前

    如果你真的不在一个分支上,那么简单的解决方案就是创建一个新的分支:

    git branch <name> 7833c31
    

    git branch <name> HEAD
    

    你可以着手解决问题,或者,希望只是继续你的发展。