標籤:

git本地倉庫關聯多個remote,怎麼用本地一個分支向不同remote不同分支推送代碼?

問題背景是這樣的:

為了同時使用http://coding.net和http://github.com兩個網站的pages服務,我本地git倉庫關聯了兩個remote倉庫,分別是http://coding.net和http://github.com遠程庫的,兩個遠程庫的pages服務分支名分別是coding-pages和gh-pages。

我本地已經添加了這兩個遠程庫,假設我現在本地開發分支名字為pagesServe,現在代碼commit提交好後,怎麼分別向coding的coding-pages分支和github的gh-pages分支推送現在的代碼呢?

拋開問題背景本身的描述為:

我本地開發分支,名字為A,每次開發完,要分別把代碼推送到遠程庫remote01的B分支和遠程庫remote02的C分支。

這樣的設想可行嗎?操作流程是什麼?我是git小白,所以您講的越詳細越好。

謝謝大家。


格式為:

git push [遠程庫名] [本地分支名] : [遠程分支名]

具體操作為:

git push remote01 A:B

git push remote02 A:C


瀉藥。

1. 如果你本地分支跟遠程的分支名一樣,那很簡單,直接:

git push coding branch1

git push github branch1

而且也建議這種方式。

2. 如果你本地分支跟遠程分支不一樣,那如下:

git push coding localbranch:branch1

git push github localbranch:branch1

非常不建議這樣使用,本地分支跟遠程分支一一對應起來是最好的管理方式。

3. 如果你每次本地分支更新之後都需要同步到兩個遠程倉庫,每次都手動push各個倉庫未免有些麻煩,於是就有了下面這種方式:

git remote add all http://github.com

git remote set-url origin --push --add http://coding.net

git remote set-url origin --push --add http://github.com

上述代碼什麼意思呢?就是你設置了一個all的遠程倉庫,這個all關聯了coding和github的遠程地址,以後只需要執行:

git push all branch

就直接向以上兩個遠程倉庫同時push代碼了。


這種無聊的操作如果每次都手動推,效率太低了。

上持續集成工具吧,輪子都是現成的。

可以參考我這個Github項目

GitHub - lowwor/lowwor.com

這是一個基於Hugo搭建的Blog,利用了http://wercker.com提供的服務。每次寫完文章以後,只要把源碼推到Github的master分支里,它就會自動幫你編譯,生成靜態頁面,部署到Github的gh-pages和Coding的coding-pages上。

具體的部署可以參考下面的鏈接

Hugo利用Wercker自動部署:

Hugo - Automated deployments with Wercker

部署到coding-pages的wercker step:

GitHub - lowwor/step-coding-pages: Wercker steps to auto deploy to coding.net coding-pages


題主,你寫個bash腳本叫pushall.sh,裡面是你每次需要push的所有 git 命令,以後每次想push直接./pushsll.sh就好了,並不需要什麼額外的工具,自動化的事情很多幾個腳本就能解決,樓上幾位都走偏了


如果題主使用hexo來建站,可以直接在配置文件里添加多個倉庫如下:

Deployment


  1. 建立/添加遠程倉庫 :使用 git remote add命令
    1. git remote add 遠程倉庫名1 遠程倉庫地址1
    2. git remote add 遠程倉庫名2 遠程倉庫地址2

  2. 推送代碼 :使用 git push 命令
    1. git push 遠程倉庫名1 本地分支名1
    2. git push 遠程倉庫名2 本地分支名2


上面的回答都沒有真正解決題主的問題

我在這裡補充一下

很簡單啊

把分支先拉下來

比如origin/master是A網站的 github/master2是B網站的

每次在master上面改動 然後push到遠程倉庫

再切換到master2下面 把master的代碼merge下來(這樣兩邊的代碼就同步了)

最後 push到遠程(如果你用了ide會自己對應遠程倉庫的名字)

否則就不能直接push了

運行git push github master2:master

如果還有什麼問題,歡迎隨時提問


推薦閱讀:

如何在 GitHub 下載某個程序的特定版本(代碼)?
gitlab或github下fork後如何同步源的新更新內容?
git怎麼控制成員的許可權?
如何優雅地使用 Git?
github for windows安裝失敗了,怎麼辦?

TAG:Git |