关联多个Git仓库

关联多个Git仓库

一般状况下,一个本地Git仓库对应一个远程仓库,每次pullpush仅涉及本地仓库和该远程仓库的同步;然而,在一些状况下,一个本地仓库须要同时关联多个远程仓库,好比:同时将一个项目发布在Github和Gitee上,以兼顾国内外的访客。git

一键推送

首先查看已有的远程仓库:(假定最初仅关联了一个远程仓库)github

git remote -v
origin  git@github.com:keithnull/keithnull.github.io.git (fetch)
origin  git@github.com:keithnull/keithnull.github.io.git (push)

而后,不额外添加远程仓库,而是给现有的远程仓库添加额外的URL。使用git remote set-url -add <name> <url>,给已有的名为name的远程仓库添加一个远程地址,好比:bash

git remote set-url --add origin git@git.coding.net:KeithNull/keithnull.github.io.git

再次查看所关联的远程仓库:fetch

git remote -v
origin  git@github.com:keithnull/keithnull.github.io.git (fetch)
origin  git@github.com:keithnull/keithnull.github.io.git (push)
origin  git@git.coding.net:KeithNull/keithnull.github.io.git (push)

能够看到,咱们并无如方法1通常增长远程仓库的数目,而是给一个远程仓库赋予了多个地址(或者准确地说,多个用于push的地址)。url

所以,这样设置后的pushpull操做与最初的操做彻底一致,不须要进行调整。.net

分别推送

首先,查看本地仓库所关联的远程仓库:(假定最初仅关联了一个远程仓库)code

$ git remote -v
origin  git@github.com:keithnull/keithnull.github.io.git (fetch)
origin  git@github.com:keithnull/keithnull.github.io.git (push)

而后,用git remote add <name> <url>添加一个远程仓库,其中name能够任意指定(对应上面的origin部分),好比:rem

$ git remote add coding.net git@git.coding.net:KeithNull/keithnull.github.io.git

再次查看本地仓库所关联的远程仓库,能够发现成功关联了两个远程仓库:同步

$ git remote -v
coding.net      git@git.coding.net:KeithNull/keithnull.github.io.git (fetch)
coding.net      git@git.coding.net:KeithNull/keithnull.github.io.git (push)
origin  git@github.com:keithnull/keithnull.github.io.git (fetch)
origin  git@github.com:keithnull/keithnull.github.io.git (push)

此后,若需进行push操做,则须要指定目标仓库,git push <repo> <branch>,对这两个远程仓库分别操做:it

$ git push origin master
$ git push coding.net master

同理,pull操做也须要指定从哪一个远程仓库拉取,git pull <repo> <branch>,从这两个仓库中选择其一:

$ git pull origin master
$ git pull coding.net master
相关文章
相关标签/搜索