讓你的 Git 一次 Push 到多個不同的遠端吧!

一般來說一個 Git 都只會 Push 到一個遠端,但是這樣是很不安全的,假設那個唯一的遠端掛了,你的資料也就跟著不見了當然本機還有),不過我個人還是會推薦一次 Push 到多個遠端。

那我 Push 的時候需要打兩行指令嗎?

不用,我們把多個遠端的網址都設定在 Origin,如此一來你只需要打 git push 就可以一次 Push 到多個遠端。


1. 事先準備

首先你要先替你的一個專案準備至少一個不同 Git 伺服器的倉庫,如果你覺得額外多一個倉庫還不夠安心,要新增到幾百個都可以,先假設稍後要新增一個遠端:

[email protected]:Test/Test.git  

2. 查看目前所有的路徑

你可以先輸入 git remote -v 查看所有遠端路徑。

(push) 意味著會被推送的遠端,而 (fetch) 則是可供拉回的遠端,一般只有一個 fetch

$ git remote -v
origin [email protected]:Test/Test.git (fetch)  
origin [email protected]:Test/Test.git (push)  

3. 新增一個 Origin 路徑

我們透過下列方式新增一個 Origin 的遠端。

git remote set-url origin --push --add <遠端路徑>  

依照我們的範例,就像這樣。

$ git remote set-url origin --push --add [email protected]:Test/Test.git

4. 最終檢查

接著再次輸入 git remote -v 檢查剛才新增的遠端路徑。

$ git remote -v
origin [email protected]:Test/Test.git (fetch)  
origin [email protected]:Test/Test.git (push)  
origin [email protected]:Test/Test.git (push)  

最後我們 Push 的時候就會一次 Push 到兩個地方了。

$ git push

Counting objects: 55, done.  
Delta compression using up to 8 threads.  
Compressing objects: 100% (24/24), done.  
Writing objects: 100% (28/28), 6.99 KiB | 0 bytes/s, done.  
Total 28 (delta 20), reused 0 (delta 0)  
To [email protected]:Test/Test.git  
f54bad0..9a95841 master -> master

Counting objects: 55, done.  
Delta compression using up to 8 threads.  
Compressing objects: 100% (24/24), done.  
Writing objects: 100% (28/28), 6.99 KiB | 0 bytes/s, done.  
Total 28 (delta 20), reused 0 (delta 0)  
To [email protected]:Test/Test.git  
f54bad0..9a95841 master -> master