網頁

2018年3月2日 星期五

合併兩個 git repo 成為一個

假設現在有兩個 ProjectA 和 ProjectB ,希望他們變成一個 Project 裡面的子目錄

ProjectC/
     |- /ProjectA
     |- /ProjectB

做法:

  1. 先到 ProjectA/ProjectB 裡面建立子目錄,方便識別,叫做 PDA/PDB
    cd ProjectA
    mkdir ProjectA
    
    cd ProjectB
    mkdir ProjectB
    
  2. 用 git mv -k 把 * 都搬進 PDA/PDB 裡面,注意 dot 開頭的檔案 * 吃不到
    cd ProjectA
    git mv -k * ProjectA
    
    cd ProjectB
    git mv -k * ProjectB
  3. git commit 到 local repo 暫存著
    cd ProjectA
    git commit -m "合併 repo"
    
    cd ProjectB
    git commit -m "合併 repo"
  4. 到 ProjectC 目錄裡面用 git remote add 把 ProjectA , ProjectB 兩個 local repo 加進來
    
    cd ProjectC
    git remote add PDA ../ProjectA
    git remote add PDB ../ProjectB
    
  5. git checkout 到每個要處理的 branch ,例如 develop / master ,依次 pull 每個 repo branch
    git checkout master
    git pull PDA master
    git pull PDB master
    
    git checkout develop
    git pull PDA develop
    git pull PDB develop
  6. 用 git log 查看是否正確
    git log --oneline --graph --decorate --all
  7. git push
    git push

git sparse checkout

git clone -n git@git.example.com:Project/Demo.git
git config core.sparsecheckout true
echo "Path/You/Want/To/Checkout/" >> .git/info/sparse-checkout
git checkout develop