
有時候一個程式專案的程式碼會託管於多個代碼託管平台,像是筆者有些專案會同時託管在 GitHub 以及個人自建的 Gitea 實例上。
那麼問題來了:要如何設置才能讓一個被 Git 所管理的專案倉庫,能夠同時關聯到多個遠端倉庫呢?一般來說,可以使用命令行或者直接修改 .git
目錄中的 config
文件來設定,以下個別說明。
使用命令行工具
我們可以使用以下命令,替 Git 管理的專案倉庫添加遠端倉庫:
# 添加遠端倉庫
$ git remote add [remote-name] [url]
# 檢查遠端倉庫設定
$ git remote -v
$ git remote --verbose
其中 [remote-name]
是方便 Git 識別與使用者操作的遠端倉庫名稱,在設置好遠端倉庫之後,便可以在執行 git push
命令時,指定遠端倉庫名稱來推送到不同的遠端倉庫了:
# 推送到指定的遠端倉庫
$ git push [remote-name]
執行
git push
時如果沒有帶上遠端倉庫名稱,預設會推送到名為 origin
的遠端倉庫,這是執行 git clone [url]
命令所克隆的遠端倉庫的預設名稱。如果要修改 git push
推送的預設上游倉庫,可以使用 git push -u [remote-name] [branch-name]
來設定。
修改專案倉庫配置
執行前面的命令行的結果,實際上是會修改專案倉庫中 .git
目錄內的配置文件,因此我們也可以使用慣用的編輯器直接修改 .git/config
文件中的內容:
[core]
...
[remote "github"]
url = git@github.com:user/demo.git
fetch = +refs/heads/*:refs/remotes/github/*
[remote "gitea"]
url = git@gitee.com:user/demo.git
fetch = +refs/heads/*:refs/remotes/gitea/*
[branch "main"]
remote = github
merge = refs/heads/main
上述範例中的
[branch "main"]
設定,便是用來設定指定分枝 main
的預設遠端倉庫(或稱上游倉庫),亦即執行 git push
如果沒有帶上遠端倉庫名稱時所推送的遠端倉庫。
張貼留言