[remote "origin"]
url = git@github.com:SegmentFault/XXX.git
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "dev"]
url = git@gitlab.com:root/XXX.git
fetch = +refs/heads/*:refs/remotes/dev/*
config 中配置了兩個遠端倉庫。我想終端下一句 git push 同時把程式碼提交到兩個倉庫,該怎麼做?
巴扎黑2017-04-27 09:05:02
我用過兩種方法,最早的時候是設定多個 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 了。
這兩種方法其實各有各的適用場景,自己取捨吧。
世界只因有你2017-04-27 09:05:02
既然有被牆的危險,就有兩個倉庫不同步的蛋疼事。還不太麻煩..
實在要這麼做的話,就寫個shell檔吧。
#!/bin/bash
git push origin master
git push dev master
#以上,根据你自己的要求调整一下.
然後別忘了讓它成為可執行的:(假設腳本叫push.sh
)
JerryMac:Dev Jerry$ chmod +x ./push.sh
JerryMac:Dev Jerry$ ./push.sh
大家讲道理2017-04-27 09:05:02
答案:http://blog.codepiano.com/2013/07/03/push-multi-remote-repositories/
SegmentFault同樣的問題:
/q/1010000000367632/a-1020000000369754
/q/1010000000411859/a-102001000411859/a-102001000