關聯多個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
相關文章
相關標籤/搜索