git遷移倉庫

需求:有個工程原來放在A服務器的git上,現在要遷移到B服務器上,需要保留所有的提交記錄
兩個服務器都是用的本地安裝的gitlab
如果2個服務器包含的member不一樣也沒關係,都可以導過去

試驗過程:
方法1:
進入gitlab界面,選擇 new project,然後選擇 import project.
在這裏插入圖片描述
有兩種方式導入,一種是 Repo by URL, 需要有相應的權限,需要2個服務器可以通信,直接輸入項目舊git服務器上的git地址就可以。
另一種是從舊服務器導出項目,然後用GitLib export ,輸入項目名稱,然後選擇導出的壓縮包即可。
如何導出呢?
gitlab導出在這裏插入圖片描述
在這裏插入圖片描述
點了導出後,會提示將收到一封郵件,如果沒配置郵箱,或者是局域網的根本發佈了郵件,這個時候,等導出完畢後,再刷新頁面,可以看到下載按鈕,直接下載就行。如果項目比較大,不知道什麼時候導完,可以過會再刷新
在這裏插入圖片描述
方法2:
使用命令行:
(1)從原地址克隆一份裸版本庫

git clone --bare git://aaa.com/username/project.git

上述命令中的 git://aaa.com/username/project.git 指的是項目的舊git地址

–bare 創建的克隆版本庫都不包含工作區,直接就是版本庫的內容,這樣的版本庫稱爲裸版本庫。
(2)從新git服務器上創建一個空項目
(3)以鏡像推送的方式上傳代碼到 新git 服務器上

cd project.git 
git push --mirror [email protected]/username/newproject.git

上述命令中 cd project.git ,是我們再第一步git clone 下來的版本庫,是個文件夾
git push --mirror 後面的地址,是新git服務上剛創建的項目的git地址,就是我們要導入的那個地址
主要git push 這個也要求必須具有相應的權限,不然報錯

$ git push --mirror [email protected]:group/project.git
Counting objects: 64, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (36/36), done.
Writing objects: 100% (64/64), 56.90 KiB | 0 bytes/s, done.
Total 64 (delta 12), reused 64 (delta 12)
remote: GitLab:
remote: A default branch (e.g. master) does not yet exist for group/project
remote: Ask a project Owner or Maintainer to create a default branch:
remote:
remote: http://git.bbb.com/group/project/project_members
remote:
To [email protected]:group/project.git
! [remote rejected] dev -> dev (pre-receive hook declined)
! [remote rejected] master -> master (pre-receive hook declined) .0.190630_release (pre-receive hook declined)
error: failed to push some refs to ‘[email protected]:group/project.git’

執行完git push 後,就成功上傳到新git了,clone下來的裸版本庫可以刪除了。

再從新git地址clond下項目來,就可以繼續使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章