git:一個本地分支可以對應多個遠程分支么?
背景:本地的一個項目,分別上傳了github/gitlab。本地只有一個master分支,計劃未來git pull/push時不加參數。可以做到一個本地分支分別對應不同的主機上的遠程分支么?一次push,github/gitlab都可以得到更新。
1. init repository 後先加入github
$ git init.
$ git remote add origin git@github.com/username/project
2. 查看 remote 是這樣
$ git remote -v
origin git@github.com/username/project (fetch)
origin git@github.com/username/project (push)
$ git remote set-url --push --add origin git@gitlab.com/username/project
4. 再查看 remote 可以發現多了一個 push 的位置
$ git remote -v
origin git@github.com/username/project (fetch)
origin git@github.com/username/project (push)
origin git@gitlab.com/username/project (push)
此時當你 git pull origin 就會從 github 拉資料到本地
當你 git push origin 就會同時把資料推到 github 及 gitlab如果 push 時因故發生一個成功另一個失敗,例如 github push 成功後,gitlab 確發生 ssh key 失效,此時兩個 remote 不同步,解決的方法是單獨 push gitlab$ git push git@gitlab.com/username/project
謝邀。
你或許可以在Gitlab或Github設置Hook讓某一個庫更新後自動的Push到另一個庫做到同步。
或者尋找第三方服務,專門做repo同步的。
對於本地直接push到若干個remote的想法,不說能否實現。首先我覺得你這麼偷懶少打不了幾個字,反而養成了不好的習慣。每次顯式的在命令行里描述remote和branch是個很好的習慣,因為萬一你不想把本次臨時分支提交到remote,或者萬一一不小心提交到錯誤的遠程分支又被協作者簽出,都會帶來不必要的麻煩。(當然我不確定你是否用的是命令行操作)
或者說,我多年來的經驗告訴我,不必要的偷懶只會給自己帶來更多的麻煩,浪費更多的時間。。。大致流程
git remote add xxxgit commit
git push xxxgit push origin直接git push ,git pull 更新只會更新origin.要省事還是把以上過程用shell包裝一下。以後push和pull都用腳本就是了。可以先用git remote add建立指向不同遠端的remote,然後封裝一個push函數,最簡陋的譬如git remote | while read line;do git push $line;done。或者同樣簡陋地,把幾條完整的git push命令封裝到一起。之所以說簡陋,是因為沒有錯誤檢查和處理。如果你想要省事,那就盡量自動化,但自動化的同時要盡量把各種可能出現的情況都考慮到,不然容易出錯。
你讓git fetch怎麼辦?
推薦閱讀:
※High Flexibility Remote Development
※為什麼說「函數式語言是沒有調用棧」的,所謂「函數式語言的思維」又是指什麼呢?
※「過分」地追求 OOP 有意義嗎?