考慮到github不能免費建立私有倉庫緣由,最近開始在使用碼雲託管項目,這樣避免了鏈接數據庫的用戶密碼等信息直接暴露在公共倉庫中。今天忽然想到一個點,就是能不能同時把代碼推送到github和碼雲上呢?答案是能夠的。git
首先,咱們在開始一個項目時,在本地寫了一些代碼,須要同時託管到github和碼雲(gitee)上。這個時候咱們要怎麼辦呢?請接着看。github
在C:\Users\robin.ssh目錄下運行git bash數據庫
// 這個是給github生成的 ssh-keygen -t rsa -C "1148121254@qq.com" // 這個是給碼雲生成的 ssh-keygen -t rsa -C "cumtrobin@163.com"
生成後自行命名管理,這裏再也不贅述。接着把公鑰分別放在github和碼雲上。私鑰能夠用config文件管理bash
# 配置github.com Host github.com HostName github.com IdentityFile C:\\Users\\robin\\.ssh\\id_rsa_github PreferredAuthentications publickey User cumtRobin # 配置gitee.com Host gitee.com HostName gitee.com IdentityFile C:\\Users\\robin\\.ssh\\id_rsa_gitee PreferredAuthentications publickey User Tusi
接着咱們測試一下ssh
ssh -T git@github.com ssh -T git@gitee.com
成功則會獲得這樣的反饋測試
首先是在github和碼雲上分別建立一個倉庫。這個玩過github的都知道,不細說。this
接着在本地項目根目錄建立git倉庫加密
git init
要把兩個remote倉庫與本地git倉庫關聯起來,咱們直接來運行url
// 添加github的遠程庫 git remote add origin git@github.com:cumtRobin/BlogFrontEnd.git // 添加碼雲的遠程庫 git remote add gitee git@gitee.com:tusi/BlogFrontEnd.git
而後咱們運行git remote查看添加的遠程庫列表命令行
git remote // 獲得如下值 origin gitee
說明已經添加成功,接着咱們分別查看git status,會看到本地有不少文件待提交,接着git add, git commit,最後git push的時候要注意分開push
// push到github主分支 git push origin master // push到gitee主分支 git push gitee master
雖然麻煩了一點,須要push兩次,可是目的是初步達成了。若是想要一次性push解決,那也不是沒有辦法。
爲了不引發歧義,這裏先將origin,gitee的remote庫刪除
git remote rm origin git remote rm gitee
從新添加remote
git remote add all git@github.com:cumtRobin/BlogFrontEnd.git
能夠看到,我實際上是添加的github的遠程庫,只不過把它的名字叫作all。接着咱們把碼雲上的remote庫也關聯起來。
git remote set-url --add all git@gitee.com:tusi/BlogFrontEnd.git
這樣操做之後,就能夠運行一條push命令了
git push all --all
有人說能夠改.git/config文件實現。其實剛纔上面的命令修改的就是config文件,可是本人建議,多練練命令行,這樣也會加深對git的理解。這時候咱們再查看一下.git/config文件。能夠看到remote all下面是有兩個url的。
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "all"] url = git@github.com:cumtRobin/BlogFrontEnd.git url = git@gitee.com:tusi/BlogFrontEnd.git
學會了兩個託管平臺的配置,那使用更多的託管平臺也就不難實現了。
ps:再分享一個小技巧,因爲我在生成ssh密鑰時,加了passphrase,致使我每次push都要輸入密碼,很煩人。
其實,只要重置一下這個passphrase就能夠了。
// 進入到.ssh目錄,運行git bash ssh-keygen -p // 再輸入密鑰名,如id_rsa_github,先輸入舊密碼,而後一路回車便可,多個密鑰重複此操做便可。
2019-04-18
git pull
的細節由於都是從本地 push
代碼到遠程倉庫,好久沒有從遠程倉庫拉取代碼了,今天不當心在 github
上改了倉庫中的 readme
文件,致使和 gitee
不一樣步。使用 git pull
報錯,慌的一批。
$ git pull There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=all/<branch> master
原來是要使用下面這條命令才行。
$ git pull all master From github.com:cumtRobin/BlogFrontEnd * branch master -> FETCH_HEAD Already up to date.
上面的 all
是指 remote
,即遠程倉庫,master
是指分支名,master
即主幹分支。