【问题标题】:Merging multiple git branches into master?将多个 git 分支合并到 master 中?
【发布时间】:2009-11-27 19:02:26
【问题描述】:

所以我有 3 个 git 分支:

  • 主人
  • 刷新
  • auth_upgrade

真的没有像我应该的那样使用分支...所以master 已经过时了,refresh 有点过时了,auth_upgrade 实际上是分支这是完全最新的。

所以...我最终希望将 auth_upgrade 设为 master 分支,然后将 git push 设为我的 github 存储库。

这样做的最佳过程是什么?

【问题讨论】:

    标签: git merge branch


    【解决方案1】:

    您可以将auth_upgrade 拉入master

    $ git co master
    $ git pull . auth_upgrade
    
    • 然后在master 上进行主线工作并使用此分支与您的远程同步..
    • refresh 应用相同的过程,如果您想要包含一些独特的更改..

    见:

    $ man git-pull
    
        git-pull - Fetch from and merge with another repository or a local branch
    

    【讨论】:

    • 我现在遇到的问题是 auth_upgrade 和 master 之间的文件差异存在各种冲突。如何让 auth_upgrade 覆盖 master 中的任何代码差异?
    • 请查看/kernel.org/pub/software/scm/git/docs/git-merge.html//合并策略:我们的/这解决了任意数量的头,但合并的结果树始终是当前分支头的树,有效地忽略了从所有其他分支。它旨在用于取代旧的分支开发历史。
    【解决方案2】:

    您可以使用git branch -m 选项重命名分支:

    git branch -m master old_master
    git branch -m auth_upgrade master
    

    【讨论】:

    • 但是如果我将 auth_upgrade 重命名为 master 然后尝试推送到 github,我会收到 non-fast-forward 错误。另外,masterauth_ugrade 之间的所有新文件和更改都不会被推送,所以当我从分支部署时,这些文件完全不正常。
    • 啊,你没有提到master 不是auth_upgrade 的祖先。这确实有所作为。我会留下我的答案,以防它对有类似情况的其他人有用,可以通过重命名来解决。
    【解决方案3】:

    如果当您说“过时”时,旧分支是严格的祖先,那么您实际上并没有任何合并问题。

    如果您只想将当前分支变为远程存储库的主分支,您可以这样做:

    git push origin HEAD:master
    

    编辑: 从你的一个 cmets 听起来你在当前分支中没有来自远程 master 的所有更改,所以你可能需要在成功推送之前合并它们:

    git fetch
    git merge origin/master
    

    然后您可以删除本地分支。使用小 -d 删除是安全的,因为它只删除当前分支的祖先分支。

    git branch -d master
    git branch -d refresh.
    

    如果您的本地分支不称为 master 让您感到困扰,您现在可以这样做:

    git checkout -b master
    git branch -d auth_upgrade
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 2013-01-14
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2012-04-30
      • 1970-01-01
      相关资源
      最近更新 更多