本文主要介绍 Git 关联多仓库的常见操作,本地分支关联到远程仓库分支后切换到新仓库,本地分支内容推送到主仓库后同步推送到从属仓库,如推送 gitee 同时推送到 github
一般情况下我们在添加远程仓库时的命令如下:
git remote add origin https://gitee.com/mebugs/mebugs.com.git
其中 origin 是为远程仓库提供的别名,实际上是可以自由定义的。
当我们需要添加多个仓库的时候,可以通过如下操作:
# gitee
git remote add gitee https://gitee.com/mebugs/mebugs.com.git
# github
git remote add github https://github.com/mebugs/mebugs.com.git
通过 git remote -v 可以查看所有关联的远程仓库:
添加多仓库后 .git 目录下的 config 文件如下图所示:
在执行任意仓库拉取代码前建议先通过 git fetch [仓库别名] 获取下远程仓库的最新内容。
拉取代码可以通过 git pull [仓库别名] [仓库分支]
推送代码可以通过 git push [仓库别名] [仓库分支]
实际工作中,我们可能会遇到业务代码存放在一个仓库中,但是具体开发是放在个人 Fork 的仓库下。
通过 git push [仓库别名] [仓库分支] 确实可以自由推送代码到任意分支,但有时候分支很多,不一定记得清要往那边推送。
此时需要设置本地分支与远程仓库分支的关联,在拉取/推送代码时可以直接使用 git pull/push 。
本地分支与远程仓库分支的关联命令方式有两个:
# 本地没有此分支 将远程 backup 分支检出并关联本地 backup 分支
# -b 没有此分支自动创建,一般多针对非 master 分支
git checkout -b backup gitee/backup
# 本次有分支 将远程 master 分支关联到本地 master 分支
$ git branch --set-upstream-to=gitee/master master
# 成功反馈
Branch 'master' set up to track remote branch 'master' from 'gitee'.
此时配置文件会增加如下内容:
同理,如果直接在配置文件中添加上述配置也能够实现远程仓库分支和本地分支的关联操作。
当本地分支与远程分支关联后,可能会涉及到仓库切换的情况。
可以通过 git branch --set-upstream-to= 命令进行修改:
# 修改前需要先 fetch 需要切换的程仓库的最新内容。
git fetch github
# 重新设置关联
git branch --set-upstream-to=github/master master
配置文件变动如下:
同理,直接在配置文件中修改 remote = [仓库别名] 也可以实现关联仓库的切换。
当您理解了上方内容后,如果遇到需要同步推送的需求时,可以对配置文件进行微调即可完成。
比如:本地修改代码后默认推送到 gitee ,希望一条 git push 命令可以同时将内容推送到 github 。
将两个仓库地址合并到一个别名下,本地分支关联此别名,配置文件:
[remote "mebugs"]
url = https://gitee.com/mebugs/mebugs.com.git
url = https://github.com/mebugs/mebugs.com.git
fetch = +refs/heads/*:refs/remotes/mebugs/*
[branch "master"]
remote = mebugs
merge = refs/heads/master
当使用 git push 时,先向 gitee 推送,推送完成后继续向 github 推送,效果如下图:
温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。