代码之家  ›  专栏  ›  技术社区  ›  Gigi Bayte 2

Git认为领先分支机构落后

  •  1
  • Gigi Bayte 2  · 技术社区  · 6 年前

    我犯了一个错误,在本应推动开发的时候将更改推给了master。哎哟!

    因此,我推动了这些更改的开发,并从master中删除了这些更改。

    不幸的是,这导致GitHub认为master比develop早一步,而develop比master早一步。

    我怎样才能让GitHub理解develop是一个具有更新内容的分支,这样新的更改就不会在将来的pull请求中被覆盖?

    编辑:

    我通过拉动主文件删除了主控文件中的更改,并使用

    git revert -m 1 <SHA of commit>
    

    ,并将其推给master

    编辑2:

    看来我不清楚。开发分支有我想在将来实现以掌握的更改。

    然而,主分支有我应用于开发的提交,还有一个额外的提交,它取消了开发所做的更改。

    我希望开发中的更改在将来应用于master。然而,master相信这是在前面,因为我取消了在develop中实现的更改。

    因此,开发分支被认为是落后一个提交,超前0个提交,因为master拥有来自develope的更改,再加上一个反转来自develope的更改的提交。

    根据我的理解,git rebase将“快进”发展到master。然而,这是不需要的,因为这将删除master由于上述解释而需要在将来进行的更改。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Pankaj Singhal    6 年前

    这是git的一个概念,其中一个分支既在前面,也在后面;在另一个分支后面。

    Since you removed the unwanted commits from master 但再提交1次(在 develop 分支),这意味着中存在1个提交 主人 和缺席 发展 树枝清晰地 主人 是1个提交之前 发展

    类似地,必须有一些提交(例如n),它们存在于 发展 但不存在于 主人 -这意味着 发展 分支机构为 n 提前提交 主人

    所以你 主人 都在前面(1提交)(&以下(n次提交) 发展 树枝

    要解决此问题,请合并 主人 进入 发展 树枝

    编辑后:

    要解决此问题,请获取您认为正确属于主分支的最新提交id(位于开发分支提交之前)。说 <c1> .然后执行以下操作:

    git reset --hard <c1>
    

    这将同时删除合并和取消合并提交。