git 在不同服務器主機上同步 git 倉庫


git 在不同服務器主機上同步 git 倉庫

參考鏈接:https://opentechguides.com/how-to/article/git/177/git-sync-repos.html

1.在本地的一個文件夾中執行:

git clone --mirror ssh://[url]/repo_name.git

2.添加一個remote:

cd ropo_name.git

git remote add --mirror=fetch <secondary_romote_name> ssh://[url]/secondary_repo_name.git

注:secondary_repo_name.git 是另外一個服務器上希望同步的git倉庫

3.同步

git fetch origin

git push <secondary_remote_name> --all  #這是把所有分支都push

如果想單獨push一個分支:

git push <secondary_remote_name> <branch>

例如:

git push <secondary_remote_name> master

設置默認的 push,下次只用 git push 即可:

git push -u <secondary_remote_name> master

4.在remote中添加多個可 push 的 url

有時候我們不止有多一個 remote 的 git 倉庫,我們希望在 push 一個 remote 的時候,同時更新多個 url

git remote set-url --add --push <secondary_remote_name> <url>  #注意:一定要把第一個 url 也執行一次,不然每次push ,只會push 你 add 的那些 url,fetch url 並不會push

git remote set-url --add --push <secondary_remote_name> <url_2>

其實這是在 git config 中添加了相應的內容(藍色):

 

[remote "secondary_remote_name"]
url = ssh://[path]/repo_name.git
fetch = +refs/*:refs/*
pushurl = ssh://[path]/repo_name.git
pushurl = ssh://[path_2]/repo_name_2.git

所以我們可以直接在該 remote section 下面復制修改即可,是不是很方便

分析:

  通過 --mirror 克隆的是一個 bare repo,里面的內容和服務器的一樣,進入倉庫后,顯示的分支是[BARE:master],在這個文件夾里面,不能使用 work tree 相關的 git 命令,例如 git status,git pull。

  secondary_repo_name.git 和 repo_name.git 的內容是完全一致的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM