分支怎么能同时提交X并且Y提交?

时间:2017-01-05 18:50:32

标签: git github

我正在检查github中的一些项目,其中一个项目我注意到了这一点:

This branch is 287 commits ahead, 361 commits behind X:Master

这究竟有多可能?

2 个答案:

答案 0 :(得分:4)

就像那样:

       o ----- ... 285 commits ... -- o     <-- master
      /
o -- o -- o -- ... 359 commits ... -- o     <-- X/master

您在本地存储库中的分支master上创建了287次提交。无法从X/master访问这些提交。这就是master &#34; 287提前提交X/master&#34; 的原因。

与此同时,其他开发人员在X/master上创建了361个新提交。由于本地masterX/master分歧,因此master无法访问这些361次提交,这就是为什么master &#34; 361次提交的原因在X/master&#34;

之后

这是版本控制系统中的正常情况。您可以通过两种方式将master分支与X/master同步:

  1. <强>合并

    执行命令

    git checkout master
    git merge X/master
    

    这会创建一个新的提交,其中包含masterX/master的所有更改,并且有两个父级:masterX/master分支的当前提示。< / p>

    如果成功,图表如下所示:

                                       +--- old "master"  
                                       v
           o -- ... 285 commits ... -- o -- o   <-- master (the merge commit)
          /                                /
    o -- o -- o -- ... 359 commits ... -- o     <-- X/master
    
  2. <强>底垫

    执行命令

    git checkout master
    git rebase X/master
    

    这将移动masterX/masterX/master上的所有提交({1}}分支上的287提交#34;提前#34}提交。提交361位于X/master,且无法从master访问。

    如果成功,图表将如下所示:

         +--- old split point
         v
    o -- o - ... 360 commits ... - o - ... 286 commits ... - o   <-- master
                                   ^
                                   +---- X/master
    

答案 1 :(得分:1)

这很简单:

  • 在时间X,分支是从主人
  • 创建的
  • 对分支进行了更改并推送到服务器
  • 对主服务器进行了更改并推送到服务器

在此之后,分支通过其更改提前掌握,并在其后面通过已推送到主控的更改。他们需要rebase或merge来合并。