如何同时将本地Git分支推送到多远程仓库的不同分支(含GitKraken)
多远程仓库分支推送配置与拉取逻辑说明
一、先修正你的远程配置错误
你当前的git1_git3远程里写错了URL,应该把git2_url换成git1_url,正确配置如下:
[remote "git1_git2"] url = git1_url url = git2_url [remote "git1_git3"] url = git1_url url = git3_url
二、配置分支推送规则(命令行方式)
Git的多URL远程默认会把当前分支推送到所有远程的同名分支,但你需要的是不同分支对应不同远程的特定分支,所以要给每个远程添加push的refspec规则:
1. 配置git1_git2远程:本地master推送到git1:master、git2:master
打开.git/config,在[remote "git1_git2"]下添加:
push = refs/heads/master:refs/heads/master
执行git push git1_git2 master时,就会把本地master推送到git1和git2的master分支。
2. 配置git1_git3远程:本地development推送到git1:development、git3:master
同样在[remote "git1_git3"]下添加:
push = refs/heads/development:refs/heads/development push = refs/heads/development:refs/heads/master
第一个refspec对应git1的development分支,第二个对应git3的master分支。执行git push git1_git3 development时,就能完成双推送。
三、GitKraken操作步骤(优先方案)
GitKraken支持可视化配置多远程和推送规则,步骤如下:
1. 确认远程仓库已添加
- 在左侧面板的「Remotes」里,检查
git1_git2和git1_git3是否存在(手动修改config后重启GitKraken即可识别)。 - 如果未添加,点击「Add Remote」,手动输入远程名称和多个URL(添加第一个URL后,点击「Add another URL」添加第二个)。
2. 设置分支的推送目标
- 对于本地
master分支:右键点击分支 → 「Set Push Destination」 → 选择git1_git2远程的master分支。之后推送master时,GitKraken会自动推送到git1和git2的master。 - 对于本地
development分支:右键点击分支 → 「Set Push Destination」 → 需手动配置双推送规则:- 先在GitKraken底部的终端面板执行命令:
git config remote.git1_git3.push refs/heads/development:refs/heads/development和git config remote.git1_git3.push refs/heads/development:refs/heads/master(和命令行配置一致)。 - 回到分支右键 → 「Push」 → 选择
git1_git3远程,即可一次性推送到git1的development和git3的master。
- 先在GitKraken底部的终端面板执行命令:
3. 一键推送操作
- 切换到
master分支,点击顶部的「Push」按钮,选择git1_git2远程,完成双推送。 - 切换到
development分支,点击「Push」按钮,选择git1_git3远程,完成双推送。
四、多URL远程拉取的逻辑
当你从多URL远程拉取时(比如git pull git1_git2 master),只会从该远程配置里的第一个URL拉取数据,其他URL不会参与拉取过程——Git设计多URL远程的核心场景是「多推送」,拉取仍然以主远程(第一个URL)为准。
内容的提问来源于stack exchange,提问作者SwingNoob
相关产品推荐
相关产品推荐

