将一个本地分支合并到另一个本地分支

Nem*_*lis 116 git merge

我有多个分支从主服务器分支(每个分支在一个单独的子目录中).

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

在完成修补程序的测试之前,我想在Branch1中已经有代码,所以我可以继续开发修复程序.
(但是因为我对git的经验并不是那么多,所以我第一次开始在第三个分支中进行合并,特别是在我弄乱了Branch1或Branch2之前就已经陷入困境)

在我的第3分支中,我首先尝试了以下内容:

git merge feature/Branch1
Run Code Online (Sandbox Code Playgroud)

但是这给出了以下错误:

fatal: 'feature/Branch1' does not point to a commit
Run Code Online (Sandbox Code Playgroud)

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

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

gab*_*bra 173

首先,结帐到您的Branch3:

git checkout Branch3
Run Code Online (Sandbox Code Playgroud)

然后合并Branch1:

git merge Branch1
Run Code Online (Sandbox Code Playgroud)

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

git checkout Branch2
git rebase Branch1
Run Code Online (Sandbox Code Playgroud)

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

  • @Si8 这只会添加从 Branch1 到 Branch3 的提交。Branch1 将保持原样。 (2认同)
  • 是的。我建议尝试一下。如果有什么东西坏了,你可以回去。这就是 VCS 的目的。 (2认同)

小智 110

您可以使用这些命令:

git checkout <the branch you want to merge into>

git merge <the branch you want contents from>
Run Code Online (Sandbox Code Playgroud)

  • @phil294 这家伙说得更好。 (13认同)
  • 这个的可读性很强 (10认同)
  • 这是第四个答案,说的是完全相同的事情。我是否遗漏了什么,或者为什么这个有 43 票赞成? (3认同)
  • 我最喜欢的答案。它更具可读性 (2认同)

And*_*per 35

  1. git checkout [branchYouWantToReceiveBranch] - 结帐分行您要接收分行
  2. git merge [branchYouWantToMergeIntoBranch]

  • 简单且应该是我接受的答案! (9认同)

Mic*_*ter 19

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

git checkout master

git merge feature_x

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


Sim*_*nni 8

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

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

git checkout [branchYouWantToMergeInto]
git merge origin/[branchYouWantToMerge]
Run Code Online (Sandbox Code Playgroud)

或者

# this creates a local branch
git checkout [branchYouWantToMerge]

git checkout [branchYouWantToMergeInto]
git merge [branchYouWantToMerge]
Run Code Online (Sandbox Code Playgroud)