【问题标题】:Updating a git branch that was created from a branch other than master更新从 master 以外的分支创建的 git 分支
【发布时间】:2018-09-08 22:53:13
【问题描述】:

我一直在为一个从master 创建的分支上的项目开发一项功能,目前正在审查合并。我会称之为dev。与此同时,我从dev 创建了一个分支,我将其称为branch

在审核时,发现dev 需要进行一些更改,所以我检查了dev,进行了更改,然后重新提交并推送。

现在我的branch 副本与其来源dev 已过时。我该如何更新它?通常,我只会做一次取回,然后是拉取。当master 发生更改时,这样做会导致我的分支引入所述更改,从而使我能够与同事的工作保持同步。当我尝试在自己的分支之间执行此操作时,它说 branch 是最新的,这是不正确的。

我错过了什么?

谢谢。

编辑:我最终做了一个变基,正如 Max Friederichs 描述的那样。它完成了我在更新branch 方面指定的内容,其中包含来自dev 的更改。我选择 Jean Rostan 的答案的原因是因为做一个 rebase 会改变 git 存储库的工作流历史,但是按照 Jean 的建议进行合并会合并分支中的新内容并单独保留工作流历史 - 当你想要看看什么时候发生的。

实际上,两种解决方案都实现了相同的目标,只是对工作流程历史的影响不同。

【问题讨论】:

    标签: git branch fetch pull


    【解决方案1】:

    如果只是本地分支(这是您的情况),请从您要更新的分支开始:

    git checkout branch
    

    然后从目标分支合并本地更改:

    git merge dev
    

    它会将dev合并到branch中,也就是说更新它。

    当您进行拉取时,您检索上游更改(在您的远程仓库中);因此,如果没有对远程仓库中的分支 branch 进行任何更改,则不会发现任何更改。

    【讨论】:

      【解决方案2】:

      您需要 rebase 您的 branch ... 分支,以便它包含您对 dev 分支所做的最新更改

      git checkout branch
      git rebase dev
      

      这将暂时搁置您对branch 的更改,应用dev 中缺少的更改,然后将您的更改重新应用到branch。此时也需要解决任何冲突。如果之前推送了branch,则需要强制推送。

      【讨论】:

        猜你喜欢
        • 2011-04-22
        • 2020-01-21
        • 1970-01-01
        • 2013-06-27
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 2019-06-06
        • 2012-01-15
        相关资源
        最近更新 更多