終端下如何設定 git 使其可以同時 push 到兩個遠端倉庫?
迷茫
迷茫 2017-04-27 09:03:02
0
3
661
[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 同時把程式碼提交到兩個倉庫,該怎麼做?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(3)
巴扎黑

我用過兩種方法,最早的時候是設定多個 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 了。

這兩種方法其實各有各的適用場景,自己取捨吧。

世界只因有你

既然有被牆的危險,就有兩個倉庫不同步的蛋疼事。還不太麻煩..
實在要這麼做的話,就寫個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
大家讲道理

答案:http://blog.codepiano.com/2013/07/03/push-multi-remote-repositories/

SegmentFault同樣的問題:
/q/1010000000367632/a-1020000000369754
/q/1010000000411859/a-102001000411859/a-102001000

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板