配置git同時push到兩個遠端庫的簡單方法
來自: http://www.cnblogs.com/techmoe/p/5167573.html
最近在寫一個開源的論壇系統,在發布代碼時選擇了github和coding這兩個平臺,我手懶,不想敲兩次git push了,所以說突然有了一個很奇怪的需求:用一條git push同時push到兩個遠端代碼庫。當然說寫個sh腳本當然肯定能解決,但是我對那個不太熟悉,所以說搜索了一下相關資料,找到一篇問答討論了這個問題
以下是解決方法,轉載自 終端下如何配置 git 使其可以同時 push 到兩個遠程倉庫?
我用過兩種方法,最早的時候是設定多個 remote,然后寫一個 alias,比如:
$ git config alias.pushall "!git push origin && git push dev"
后來在某一個版本(忘了具體的版本號)升級之后,Git 多了一項設置,使得你可以為一個 remote 設置多個 pushurl。比如說你問題里的例子,我可以不要 remote "dev",只留下 remote "origin",然后加一句:
git remote set-url --add --push origin git@gitlab.com:root/XXX.git
在這之后,你的 remote "origin" 就變成類似如下的結構:
[remote "origin"] url = git@github.com:SegmentFault/XXX.git fetch = +refs/heads/*:refs/remotes/origin/* pushurl = git@github.com:SegmentFault/XXX.git pushurl = git@gitlab.com:root/XXX.git
如此一來,我可以直接 git push origin 就可以推向兩個 repos 了。
這兩種方法其實各有各的適用場景,自己取舍吧。
請注意,我親測后發現,這篇原文中提到的加另外一個代碼庫的命令有錯誤,set-url前面不應該有"--"
原文中是
git remote --set-url --add --push origin git@gitlab.com:root/XXX.git
這個是錯的,我已經在上面引用中改正了
我該如何使用這個功能?
看完之后我試了一下,這個應該這么用
-
先把你要第一個push的代碼用 git remote add 這種通常的辦法添加好,這里將這個遠端庫命名為 bucket
git remote add bucket git@git.coding.net:xxxxx
-
第二步,用set-url這個參數將第二個代碼庫添加上去
git remote set-url --add --push bucket git@gitlab.com:root/XXX.git
然后用git remote -v 看一下已添加的代碼庫,會看到類似下文的結果
bucket git@git.coding.net:xxxxx (fetch) bucket git@git.coding.net:xxxxx (push) bucket git@gitlab.com:root/XXX.git (push)
這樣就可以了,然后試一下push代碼到bucket,就可以觀察到git按照順序自動把東西push到了遠端
</div>