首次發(fā)表在個人博客
需求背景:
需要將原來放置gitlab的倉庫遷移到新的gitlab,需要將所有分支和tag都遷移過去
實現(xiàn)方式
1.將代碼從原有倉庫中拉下來
git clone remote_git_address(remote_git_address為新服務(wù)器gitLab上新建的同名項目地址)
2.設(shè)置把本地gitlab地址替換成為集團(tuán)gitlab地址
git remote set-url origin remote_git_address(remote_git_address為新服務(wù)器gitLab上新建的同名項目地址)
3.本地倉庫推送到遠(yuǎn)程
git push origin --all 推送主干和分支
git push --tags 推送標(biāo)簽
相關(guān)知識
git checkout
用法
git checkout --orphan latest_branch
假如你的某個分支上,積累了無數(shù)次的提交孩等,你也懶得去打理,打印出的log也讓你無力吐槽,那么這個命令將是你的神器,它會基于當(dāng)前所在分支新建一個赤裸裸的分支,沒有任何的提交歷史摸袁,但是當(dāng)前分支的內(nèi)容一一俱全
新建的分支悼潭,嚴(yán)格意義上說庇忌,還不是一個分支,因為HEAD指向的引用中沒有commit值舰褪,只有在進(jìn)行一次提交后皆疹,它才算得上真正的分支。
git remote
用法
git remote -v 查看現(xiàn)有遠(yuǎn)程倉庫的地址url
修改及添加遠(yuǎn)程地址
1.修改命令
git remote set-url origin <URL> 更換遠(yuǎn)程倉庫地址,把<URL>更換為新的url地址
2.先刪后加
git remote rm origin
git remote add origin remote_git_address(remote_git_address為新服務(wù)器gitLab上新建的同名項目地址)
3.直接修改配置文件
你可能想讓你的代碼擁有兩個甚至更多遠(yuǎn)程倉庫,
你可以再添加一個遠(yuǎn)程庫: git remote add origin2; 這個方法很低效,因為你要git push 兩次才能完成push到兩個庫
其實還有一個方法,git的一個遠(yuǎn)程庫可以對應(yīng)多個地址,即我能讓遠(yuǎn)程庫origin擁有多個url地址,方法如下:
首先占拍,我們從零開始略就,
假設(shè)你現(xiàn)在想要增加3個遠(yuǎn)程庫地址,分別為:
<url1>
<url2>
<url3>
首先晃酒,先增加第一個地址 git remote add origin <url1>
然后增加第二個地址 git remote set-url --add origin <url2>
增加第三個地址 git remote set-url --add origin <url3>
….依次類推
這樣就完成了添加多個地址到origin庫中了表牢,
以后只要使用git push origin master 就可以一次性push到3各庫里面了(使用git push也可)
原理解析
git remote set-url --add origin 就是往當(dāng)前git項目的congig文件里增加一行記錄
config文件打開方式有兩種:
- 使用命令
git config -e
- 在當(dāng)前git項目的根目錄下,文件位于 .git/config (.git目錄為隱藏文件)
你每執(zhí)行一次git remote set-url --add origin 就會增加一行掖疮,如下圖:
git remote -v:顯示當(dāng)前所有遠(yuǎn)程庫的詳細(xì)信息初茶,顯示格式為 遠(yuǎn)程庫名字 url連接(類型)
你直接在config里面直接添加url來修改也是可以的,不必去執(zhí)行g(shù)it命令
注意:
使用 git push origin master
時,你可以push到origin的的多個url地址,
但是使用git pull 時,只能拉去origin里的一個url地址(即fetch-url,如上圖),這個fetch-url默認(rèn)為添加的到origin的第一個地址;
如果你想更改,只需要更改config文件里浊闪,那三個url的順序即可恼布,fetch-url會直接對應(yīng)排行第一的那個utl連接。