如何将一个远程分支合并到另一个远程分支?

29
我想知道如何将一个远程分支合并到另一个远程分支,并在应用合并后立即删除前一个分支。

另一个远程分支是否来自同一个远程? - chaiyachaiya
是的,完全相同的远程控制器。 - Zorgiev
3个回答

38
据我的理解,你有一个名为“foo”的远程仓库,其中包含分支“branch_1”和“branch_2”。 首先,我们不能在远程执行合并操作。我们必须跟踪远程仓库,本地进行所需操作(例如合并分支),然后将新的快照推送到服务器。
即:
git clone [repo_adress]
您现在位于主分支上。
您可以检出或创建其他分支,并在其中进行工作。
现在假设我们有两个分支branch_1和branch_2。您想将branch_1合并到branch_2中,然后删除branch_1。
您切换到branch_2,然后与之合并branch_1:
$ git checkout branch_2
$ git merge branch_1

要么合并顺利,要么出现冲突。 合并完成后,可以通过以下方式删除已合并的分支,即 branch_1 分支:

$ git branch -d branch_1

然后推送您的工作:

$ git push

如果远程不存在branch_2分支,您需要创建它:

$ git push -u foo branch_2

请注意,本地删除 branch_1 不会删除远程分支(假设该分支存在于远程)。 为了做到这一点,我们需要告诉 git:“将空内容推送到我想要删除的分支”,即:
$ git push remote_name :branch_name

如何像git remote push remote_name "nothing":branch_name一样读取?

现在有什么办法可以自动完成吗?

我不知道(尽管我会调查提交合并“git hook”),但我不确定我们是否应该希望这样做。在远程删除分支有些危险。手动执行可以确保我们知道自己在做什么。


那么Bitbucket上的“合并”功能是如何工作的呢?评审人员审核PR更改后,批准后只需点击“合并”,分支就会在远程合并。如果我刷新本地SourceTree,我会看到来自远程的变更。 - Tejas Chandrashekhar
是的,你说得对。当我回答时,我关注的是Git存储库端可能发生的事情,并将其作为“可能”的答案提出。 更实际的答案就像你所建议的那样。 您可以在存储库端创建MR / PR并选中“合并后删除分支”框。感谢您提出这个问题!@TejasChandrashekhar - chaiyachaiya

2
您可以使用以下命令切换到跟踪分支(表示您的远程分支的本地分支),然后将另一个分支合并到其中:
git checkout origin/name_of_your_branch

在此之后合并另一个远程分支

git merge origin/brach_name_you_wanted_to_merge

在此之后,如果出现任何冲突,请解决它。然后提交并推送。

现在通过以下命令将其检出到本地分支:checkout

git checkout name_of_your_brnach

然后使用git pull命令拉取源代码即可。就是这样。


1
为了消除那些可能不知道的歧义:你提到了“你可以切换到远程分支”,这是不准确的:那不是一个远程分支/它仍然是一个本地分支,它正在跟踪一个远程分支,并需要网络操作员进行更新,例如pull、fetch或clone;所有的分支都是本地的(即使是跟踪远程分支的跟踪分支也是本地的)- 所以你所做的任何检出都是在本地分支或跟踪分支之间进行切换 - 参见这里https://dev59.com/SW445IYBdhLWcg3wytMU - Johnny

0

你可以将它们拉到本地。进行合并并推送。然后,要删除多余的分支,只需运行

git push origin :<branch_to_delete>

例如,如果您想要删除一个名为A的分支。
git push origin :A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接