Git:在本地合并远程分支
我已经通过git fetch--all拉取了所有远程分支。我可以通过Git:在本地合并远程分支,git,repository,branch,git-branch,Git,Repository,Branch,Git Branch,我已经通过git fetch--all拉取了所有远程分支。我可以通过git branch-a将我想要合并的分支看作remotes/origin/branchname。问题是它不可访问。我无法合并或签出。每当我进行合并时,我会进入我要合并的分支(例如“git checkout branch-I-am-working-in”),然后执行以下操作: git merge origin/branch-i-want-to-merge-from您可以使用远程跟踪分支的名称引用这些远程跟踪分支(与git bra
git branch-a
将我想要合并的分支看作remotes/origin/branchname。问题是它不可访问。我无法合并或签出。每当我进行合并时,我会进入我要合并的分支(例如“git checkout branch-I-am-working-in
”),然后执行以下操作:
git merge origin/branch-i-want-to-merge-from
您可以使用远程跟踪分支的名称引用这些远程跟踪分支(与git branch-r一起列出)
您需要获取远程分支:
git fetch origin aRemoteBranch
如果要合并本地分支上的其中一个远程分支:
git checkout master
git merge origin/aRemoteBranch
注1:对于历史悠久的大型回购,在使用git fetch
时,需要添加--depth=1
选项
注2:这些命令也适用于其他远程回购,因此,如果您使用的是fork,则可以设置原点
和上游
注3:建议使用以下别名:
从aLocalBranch
,运行git combine remoteBranch
别名:
相反的场景:如果要将本地分支之一合并到远程分支上(与远程分支合并到本地分支相反,如上所示),则需要首先在所述远程分支的顶部创建一个新的本地分支:
git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch
这里的想法是将“一个本地分支”(此处为另一个本地分支
)合并到一个远程分支(origin/aBranch
)。
为此,您首先创建“myBranch
”以表示该远程分支:即git checkout-b myBranch origin/aBranch
部分
然后您可以将另一个本地分支
合并到它(到我的分支
)。也许您想用本地分支跟踪远程分支:
git checkout master
git merge origin/aRemoteBranch
创建新的本地分支机构:
将此新创建的分支设置为跟踪远程分支:
加入本分支机构:
将远程分支的所有内容拉入本地分支:
如果您已经获取了远程分支并执行了git分支-a
,
您可以获得如下结果:
* 8.0
xxx
remotes/origin/xxx
remotes/origin/8.0
remotes/origin/HEAD -> origin/8.0
remotes/rep_mirror/8.0
之后,您可以使用rep_mirror/8.0
在本地指定远程分支
诀窍在于remotes/rep_-mirror/8.0
不起作用,但rep_-mirror/8.0
起作用
因此,像gitmerge-m“my msg”rep_mirror/8.0这样的命令执行合并
(注意:这是对@VonC-answer的注释。我把它作为另一个答案,因为代码块不适合注释格式)首先从原点获取远程分支
git fetch origin remote_branch_name
将远程分支合并到本地分支
git merge origin/remote_branch_name
阿洛卡布兰奇?那是打字错误吗?我猜你是想再写一次“myBranch”?@knocte否:“如果你想把你的一个本地分支合并到一个远程分支上”:我正在将“aLocalBranch
”合并到“myBranch
”,其中“myBranch
”代表一个远程分支origin/aBranch
。很抱歉打扰你@VonC,在你之前的评论中,你说aLocalBranch
不是一个打字错误,但你批准了最新的编辑(2年后!),它纠正了这个“可能的打字错误”。在撤消编辑之前,我想与您核实一下。@rath您是对的:看来我可能有点匆忙地审阅了该编辑,近乎粗心大意。我确实编辑了答案来澄清第二个合并案例:你能告诉我现在是否更清楚了吗?我已经为此创建了一个别名。从aLocalBranch
运行git combine remoteBranch
。别名:combine=!git-fetch-origin${1}&&git-merge-origin/${1}
我想你必须先做一个git-fetch-origin/branch-I-want-to-merge-from
,对吗?git-fetch-origin-develop
然后是git-merge-origin/develop
@Olivier你是对的,这是正确的方法git merge
单靠它是不行的。谢谢你聪明的命名约定帮助了我understand@Akira是不是git-add.
->git-commit-m
->git-push-u-origin
?当接受的答案报告我们无法合并时,这对我很有效。在我的例子中,我是从GitHub上我的repo的另一个用户分支合并的。第一个命令需要fetch吗?“git merge origin/remote\u branch\u name”是否从远程分支而非本地分支读取。所以我不在乎本地分支是否更新了?@MichaelFredgeim您确实需要先获取,这样您的本地存储库才能知道远程分支的状态。Git pull基本上是从当前分支的当前远程版本获取和合并,但现在您从另一个远程版本获取和合并。
git pull
* 8.0
xxx
remotes/origin/xxx
remotes/origin/8.0
remotes/origin/HEAD -> origin/8.0
remotes/rep_mirror/8.0
git fetch origin remote_branch_name
git merge origin/remote_branch_name