配置git同時push到兩個遠端庫的簡單方法

NELFelicia 8年前發布 | 12K 次閱讀 Git 版本控制系統

來自: 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 

這個是錯的,我已經在上面引用中改正了

我該如何使用這個功能?

看完之后我試了一下,這個應該這么用

  1. 先把你要第一個push的代碼用 git remote add 這種通常的辦法添加好,這里將這個遠端庫命名為 bucket

    git remote add bucket git@git.coding.net:xxxxx
  2. 第二步,用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>

 本文由用戶 NELFelicia 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!