之前源碼是託管在 github 的, 如今想要同步託管在 gitee, 一作備份分發, 二方便國內下載使用(網速可觀), 三防特點牆...git
以前在 github 託管了這麼一個項目 mirrors-in-china, 後來國內出了 gitee, 那麼想着把項目同步一份到 gitee, 方便你們查看... 正巧 gitee 提供強制同步功能, 方便操做...程序員
我仍是隻用維護 github 那份源碼, gitee 這邊沒忘記的話, 手搓點擊下強制同步按鈕便可.github
可是容易忘記, 形成兩邊不徹底同步.fetch
不過我這個項目自己就很是簡單, 這點同步時差徹底沒大問題, 夠用, 而且沒有其餘任何多餘的操做.url
換另外一個項目來講, 我以前在 github 託管了這麼一個項目 GlobalScanner.Sdk, 應廣大小夥伴需求, 但願把項目在國內同步一份, 方便下載/參考/使用.3d
那麼不外乎就是配置多個遠程庫地址, 屢次推送咯, 那麼咱們先來看看現有遠程庫的狀況:code
$ git remote --verbose origin git@github.com:taadis/GlobalScanner.Sdk.git (fetch) origin git@github.com:taadis/GlobalScanner.Sdk.git (push)
能夠看到目前僅有 git@github.com:taadis/GlobalScanner.Sdk.git
這個遠程庫地址.orm
咱們來加一個 gitee 的遠程地址, 首先在 gitee 建好同步倉庫, 而後咱們在本地添加一個新的遠程庫地址:blog
$ git remote add giteeorigin git@gitee.com:taadis/GlobalScanner.Sdk.git
添加完成後咱們查看一下:rem
$ git remote --verbose giteeorigin git@gitee.com:taadis/GlobalScanner.Sdk.git (fetch) giteeorigin git@gitee.com:taadis/GlobalScanner.Sdk.git (push) origin git@github.com:taadis/GlobalScanner.Sdk.git (fetch) origin git@github.com:taadis/GlobalScanner.Sdk.git (push)
能夠查看到如下2個遠程庫地址:
接下來同步:
git add . git commit -m "add gitee" git push -u origin master git push -u giteeorigin master
有連接有真相:
比以前多個一次 git push
操做...其餘和以前沒有太大區別...沒有更多的心智負擔.
可是常常容易忘記...
不想着法偷懶的 coder 不是好程序員, 秉承 "最多跑一次" 的理念, 讓咱們試試怎麼一次 push 通通搞定.
在本地 git 倉庫裏找到這個文件 .git/config
, 內容以下:
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = git@github.com:taadis/GlobalScanner.Sdk.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [remote "giteeorigin"] url = git@gitee.com:taadis/GlobalScanner.Sdk.git fetch = +refs/heads/*:refs/remotes/giteeorigin/*
改成以下:
合併2個 remote 配置
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = git@github.com:taadis/GlobalScanner.Sdk.git url = git@gitee.com:taadis/GlobalScanner.Sdk.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
上面這個手動配置是爲了更好的說明而已, 其實能夠用如下命令簡化操做, 在 origin 節點下補充了一個新的遠程地址.
$ git remote set-url --add origin git@gitee.com:taadis/GlobalScanner.Sdk.git
看看補充後的遠程地址狀況
git remote --verbose origin git@github.com:taadis/GlobalScanner.Sdk.git (fetch) origin git@github.com:taadis/GlobalScanner.Sdk.git (push) origin git@gitee.com:taadis/GlobalScanner.Sdk.git (push)
注意看後面的 (fetch)(push), 相信你會明白點什麼.
而後咱們能夠繼續這樣使用來實現 github & gitee 的同步推送和分發:
git add . git commit -m "github & gitee 同步推送和分發" git push origin master
有連接有真相:
能夠看到, 使用上和最初沒有任何區別, 只是多配置了一次, 算是實現了 "最多配(跑)一次".
幾種方式, 各取所需咯.