Git使用小技巧之多個遠端倉庫

程式碼無止境發表於2019-07-12

想要獲取更多文章可以訪問我的部落格 - 程式碼無止境

這是一個普通的工作日,小代正在勤勤懇懇的寫程式碼。這時陳BOSS走到小代身邊,跟小代說:“我們的程式碼需要同時推送到Github和碼雲兩個倉庫,你研究一下怎麼搞吧。” 樂於研究和學習的小代自然是毫不猶豫的答應了下來。

準備工作

好,我們先來看下完成這篇文章的學習需要準備哪些東西。自然是一個本地的git倉庫。

mkdir git-test
cd git-test
git init
touch README.md

執行了這幾行命令之後,我們還需要在Github和碼雲上分別新建兩個遠端倉庫。到這裡我們就有了一個和小代差不多的本地環境。下面我們就一起來看下小代是通過怎樣的操作來實現陳BOSS的需求的。

小代的操作

首先小代思考的是如何在一個專案中新增兩個遠端倉庫。經過一番搜尋,小代知道了下面的命令可以給倉庫新增遠端倉庫。

git remote add [shortname] [url]

PS:我們解釋一下這行命令的兩個引數,第一個引數其實就是我們後面推送到這個遠端倉庫的時候都使用這個名稱來代替倉庫地址,第二個引數就是遠端倉庫的地址了,這句命令應該很好理解。

然後小代就在本地倉庫根目錄執行了下面兩行命令,為本地倉庫新增了兩個遠端倉庫。

git remote add gitee https://gitee.com/gancy/git-test.git
git remote add github https://github.com/ganchaoyang/git-test.git

然後我們修改README檔案後,可以分別往兩個倉庫推送程式碼。

git add *
git commit -m "first commit"
git push -u github master
git push -u gitee master

通過兩句git push命令我們確實可以向兩個遠端倉庫推送程式碼,但是作為一個喜歡偷懶的程式設計師的小代同學絕不滿足於此,於是他就想有沒有一種方式可以一句命令就同時push到兩個遠端倉庫。於是乎就有了下面的操作。小代修改了.git/config檔案中的內容。原檔案內容如下:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "gitee"]
    url = https://gitee.com/gancy/git-test.git
    fetch = +refs/heads/*:refs/remotes/gitee/*
[remote "github"]
    url = https://github.com/ganchaoyang/git-test.git
    fetch = +refs/heads/*:refs/remotes/github/*
[branch "master"]
    remote = gitee
    merge = refs/heads/master

修改後的內容為:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = https://gitee.com/gancy/git-test.git
    url = https://github.com/ganchaoyang/git-test.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

只是將兩個remote合併成了一個而已,然後再執行git push命令就會發現,會一次性向兩個倉庫push程式碼了。然後,小代同學就下班回家吃飯了。

結束語

這篇文章,主要是講了如何同時向多個遠端倉庫推送程式碼。雖然平時使用場景不多,但是偶爾遇到了這樣的需求還是很實用的。如果你喜歡我的文章,可以掃描下方二維碼關注程式碼無止境公眾號。

掃碼關注“程式碼無止境”

相關文章