一般狀況下,一個本地Git倉庫對應一個遠程倉庫,每次pull
和push
僅涉及本地倉庫和該遠程倉庫的同步;然而,在一些狀況下,一個本地倉庫須要同時關聯多個遠程倉庫,好比:同時將一個項目發佈在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
所以,這樣設置後的push
和pull
操做與最初的操做徹底一致,不須要進行調整。.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