【问题标题】:merge one local branch into another local branch将一个本地分支合并到另一个本地分支
【发布时间】:2016-11-07 10:53:27
【问题描述】:

我有多个从 master 分支出来的分支(每个分支都在一个单独的子目录中)。

  • Branch1:新开发,尚未完全完成
  • Branch2:修复了一个问题,但仍在测试中
  • Branch3:分支乱七八糟,我不会恢复的

在完成修补程序的测试之前,我希望在 Branch1 中已经有代码可用,这样我就可以继续使用修补程序进行开发。
(但由于我对 git 的经验并不多,所以我第一次开始在第三个分支中使用合并,特别是在我搞砸 Branch1 或 Branch2 之前创建它来搞乱)

在我的第三个分支中,我首先尝试了以下方法:

git merge feature/Branch1

但这给出了以下错误:

fatal: 'feature/Branch1' does not point to a commit

我接下来在我的 Branch1 中做了一个 commit -a 并再次尝试,但它一直给出同样的错误。

我做错了什么?我应该怎么做才能将代码从 - 在这种情况下 - Branch1 与 Branch3 合并?

【问题讨论】:

    标签: git merge


    【解决方案1】:

    首先,结帐到您的 Branch3:

    git checkout Branch3
    

    然后合并Branch1:

    git merge Branch1
    

    如果您想在 Branch2 上更新 Branch1 的提交,您可能正在寻找 git rebase

    git checkout Branch2
    git rebase Branch1
    

    这将使用 Branch1 的最新更新更新您的 Branch2。

    【讨论】:

    • (我想要将 Branch2 更新到 Branch1 ;-))Branch2 确实看到了 Branch1,但当我在两个分支中执行 git branch -a 时却没有看到相反的结果。因此,我无法对 Branch1 中的 Branch2 进行变基: git rebase Branch2 --> fatal: Needed a single revision
    • 当我将 rebase 作为 git rebase origin/Branch2 时,它仍然会给出错误消息 + 无效的上游 origin/Branch2
    • @Si8 这将只添加从 Branch1 到 Branch3 的提交。 Branch1 将保持原样。
    • 谢谢,如果我目前在 Dev 分支,我合并 Dev1,它会将 Dev1 合并到 Dev,对吗?
    • 是的。我建议尝试一下。如果有什么东西坏了,你可以回去。这就是 VCS 的目的。
    【解决方案2】:
    1. git checkout [branchYouWantToReceiveBranch] - 结帐分支你想接收分支
    2. git merge [branchYouWantToMergeIntoBranch]

    【讨论】:

      【解决方案3】:

      将一个分支合并到另一个分支,例如将“feature_x”分支合并到“master”分支:

      git checkout master

      git merge feature_x

      这个页面是多个搜索引擎在寻找“git merge one branch into another”时的第一个结果。但是,最初的问题比标题所暗示的更具体和特殊。
      它也比主题和搜索表达式都复杂。因此,对于大多数访问者来说,这是一个最小但解释性的答案。

      【讨论】:

        【解决方案4】:

        您可以使用以下命令:

        git checkout <the branch you you want to merge in to>
        
        git merge <the branch you want contents from>
        

        【讨论】:

          【解决方案5】:

          以防万一您因为从 Github 复制了一个分支名称而来到这里,请注意远程分支不会自动成为本地分支,因此合并将不起作用并给出“我们不能合并的东西”错误。

          在这种情况下,您有两种选择:

          git checkout [branchYouWantToMergeInto]
          git merge origin/[branchYouWantToMerge]
          

          # this creates a local branch
          git checkout [branchYouWantToMerge]
          
          git checkout [branchYouWantToMergeInto]
          git merge [branchYouWantToMerge]
          

          【讨论】:

            【解决方案6】:

            一个稍微冗长的方法,但它仍然有效:

            在分支 3:

            git fetch origin Branch1
            git merge --no-ff origin/Branch1
            

            此时可能会发生合并冲突,保存对包含合并冲突的文件所做的所有更改

            git add -A
            git commit -m "Merge"
            git push
            

            完成

            【讨论】:

              猜你喜欢
              • 2019-12-02
              • 1970-01-01
              • 1970-01-01
              • 2015-10-11
              • 2011-08-02
              • 1970-01-01
              • 1970-01-01
              • 2022-11-15
              相关资源
              最近更新 更多