将一个远程分支合并到另一个本地分支中

21

这可能是一个重复的问题,但我无法弄清楚该如何操作。我正在尝试合并一个名为remoteBranch的远程分支(它不是主分支)到我的本地分支localBranch

我的其中一个开发人员在远程分支 remoteBranch 上添加了一个新的API端点分支。作为前端开发人员,我需要获取该分支,并将其与我的本地开发分支localBranch合并,以利用该API端点。我应该怎么做?


你能解释一下为什么在检出“localBranch”时不能使用“git merge remoteBranch”吗? - mkrieger1
这个问题显示了很少的研究工作,而这个特性已经有很好的文档记录。 - Jules
3
如果我们在某些事情上没有足够的经验,即使有充分记录的事情也会感到困惑。你会被相似的特征所迷惑。这就是为什么我要求帮助。如果没能达到你的期望,请原谅,我只是正在学习东西。 - user1012181
6个回答

26

只需合并它。

git fetch
git checkout localBranch
git merge remoteBranch

error: pathspec 'remoteBranch' did not match any file(s) known to git. - user1012181
1
当我尝试合并时,会收到此消息:无法合并 - user1012181
它应该能够在没有源的情况下工作。尝试使用 git merge remoteBranch - hspandher
1
@user1012181 显然,你必须使用你的真实分支名称,而不是字面上的remoteBranch... - mkrieger1
@mkrieger1 使用了真实的分支名称 :) - user1012181
显示剩余2条评论

14
根据git-merge的文档,您可以将任何其他分支与您的本地分支合并。
您当前的分支必须是您的localBranch。要合并远程分支,只需键入:
git merge remoteName/remoteBranch

在这种情况下,我假设包含所需分支的远程名称为remoteName。它可能被称为不同的名称,例如origin或者upstream。您需要确保您本地引用的远程分支是最新的。因此,在执行合并之前,请执行fetch命令:

git fetch remoteName

这对你有帮助吗?


1
谢谢您提供如此简明扼要的答案! :) - TAH

6
将remoteBranch合并到localBranch:
git fetch
git merge localBranch remoteName/remoteBranch

如果remoteName 可能是 "origin",你可以通过命令 git remote -v 找到它。

然而,有时你可能想要使用变基(重写历史以保持提交序列的“清洁”)而不是合并(也会添加合并提交)。

Merge vs. Rebase

你可以使用以下命令将一个远程分支 (remoteBranch) 变基到本地分支 (localBranch):

git fetch
git checkout localBranch
git rebase remoteName/remoteBranch

参考资料:https://www.atlassian.com/git/tutorials/merging-vs-rebasing

合并和变基是 Git 中整合更改的两种不同方法。合并创建一个新的变更集,将指定分支上的更改合并到当前分支中。与之相反,变基将当前分支的基础更改为指定分支上的一个提交,以便在顶部应用当前分支上的提交。这两种方法都有他们自己的优缺点,具体使用哪种方法取决于你的工作流程、需求和个人偏好。


2
以下方式也可以实现相同的效果:
git pull origin origin-branch-name:local-branch-name

以上命令将合并原始分支和本地分支,保持活动状态不变。

git pull another-local-branch:another2-local-branch

它应该(未经测试)在保持活动分支不变的同时合并两个不同的分支。


0

这些答案令人困惑,因为我在这里查看:https://www.atlassian.com/git/tutorials/syncing/git-fetch,而命令是

git fetch <remote> <branch>

从远程获取特定分支到本地

然后我猜,实际上我是git新手,我可以使用git checkout branchIwantToMergeInto,然后执行git merge <branch>,在原始命令之后现在有一个本地副本<branch>

所以说,假设我正在本地工作于分支hotfix,并且我必须使用对远程staging分支所做的更改来更新此分支。 我将执行以下命令序列。

git fetch <remote> staging
git checkout hotfix
git merge staging

但在执行 git checkout hotfix 命令之前,我会确保没有未跟踪的更改(因为我是 Git 新手,不熟悉像 rebase 等高级命令),方法是执行 git add .git commit -m "我的提交信息" 命令,将任何可能引起冲突的相关分支提交。


0

在最新的git中:

git fetch origin remoteBranchName
git checkout localBranchName
git merge origin/remoteBranchName

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