【问题标题】:Git believes ahead branch is behindGit 相信前面的分支在后面
【发布时间】:2018-09-25 01:16:17
【问题描述】:

我犯了一个错误,并在应该推送开发时将更改推送到 master。哎呀!

因此,我将更改推送到开发并从 master 中删除了更改。

不幸的是,这导致 GitHub 认为 master 是在 develop 之前提交的,而 develop 是在 master 之前的。

如何让 GitHub 理解 develop 是具有更新内容的分支,这样新的更改不会在未来的拉取请求中被覆盖?

编辑:

我通过拉取它删除了 master 中的更改,使用删除最后一次提交

git revert -m 1 <SHA of commit>

,并将其推送到 master

编辑 2:

我好像不清楚。开发分支有我想要在未来掌握的更改。

但是,master 分支有我应用到 develop 的提交加上一个额外的提交,这抵消了 develop 的更改。

我希望将来将 develop 中的更改应用于 master。但是,master 认为它是领先的,因为我取消了在开发中实现的更改。

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

据我了解, git rebase 将“快进”发展为掌握。但是,这是不需要的,因为由于上述解释,这将删除 master 将来需要进行的更改。

【问题讨论】:

  • 您是如何从 master 中删除更改的?
  • @PankajSinghal 我更新了如何删除问题中的更改。

标签: git github versioning git-branch


【解决方案1】:

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

由于您从 master 中删除了不需要的提交,但又进行了 1 次提交(develop 分支中不存在),这意味着 master 中存在 1 次提交,develop 中不存在分支。很明显,master 比 develop 早 1 次提交。

同样,必须有一些提交(比如 n),它们存在于 develop 中但不存在于 master 中 - 这意味着 develop 分支是 n 提交之前 master。

所以你master 是develop 分支的前面(1 次提交)和后面(n 次提交)。

要解决此问题,请将 master 合并到 develop 分支中。

编辑后:

要解决此问题,请获取您认为正确属于 master 分支的最新提交 id(就在开发分支提交之前)。说&lt;c1&gt;。然后执行以下操作:

git reset --hard <c1>

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

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多