手邊有一個專案,因為不可抗力的原因分散成兩個不同的 git repository ,一個放在 github 上,另一個放在公司自己架的 gitea 上。

github 的 repository 維護告一個段落之後,需要把上頭的歷史記錄和分支合併回公司的 gitea 。

中間遇到一些設定的問題,所以記下來。

1. 把兩個 repository 都 git clone 到本機端,以方便作業。

2. 進到 github 目錄 ,git checkout 一個和 master 相同的分支,我是用版本號 v2 ,然後 git push 到 github 上。

3. 進到 gittea 目錄。我把要合併的 repository 以 revised 的名稱加到 git remote 的列表:

git remote add revised git@github.com:xxx.git

4. 把所有新的 repository 分支和標籤全部拉進舊的 repository:

git pull --allow-unrelated-histories revised

5. 建立一份新的 repository v2 分支的本地分支:

git checkout v2

6. 切換回舊的 repository master

git checkout master

7. 把 v2 合併到 master

git merge -n --allow-unrelated-histories v2

8. 發生了一大堆衝突。我要保留新的 repository 內容,所以使用

git checkout --theirs .

解衝突。

9. 把所有變動檔案加入此次合併中:

git add .
git commit

10. 推上 master

git push

11. 刪除不再需要的 revised 設定:

git remote remove revised

12. 確認遠端只剩原本的 gittea 設定,確認 commit 線圖正常,完工。

 

參考資料:Git 基礎 - 與遠端協同工作git merge allow unrelated histories


    文章標籤

    git git merge git remote

    全站熱搜

    repeat :D 發表在 痞客邦 留言(0) 人氣()