2018/09/27
分離 git repository 中某個資料夾並獨立為一個 repository
由於歷史因素, 公司以前只開一個 repository, 用資料夾分不同的 applications
然後現在要導入自動化, 總不能每次都下載那一大包 source code 吧
所以想辦法看有沒有可以把某個資料夾獨立成一個 repository 並且 commit log 都可以保留的辦法
當然, 我可以把該資料夾手動複製然後創立新的 repository 並且 commit 上去
但是這樣就會遺失過往的 commit log
於似乎找了一下有沒有其他方法
git 這麼神, 當然有
1. 先建立好要獨立的 repository, 以 bitbucket 為例 git@bitbucket.org:user/sub-folder-project1
2. 下載原先大 repository, 並切換到要分離的資料夾的上層目錄
```shell
$ git clone git@bitbucket.org:user/huge-project
$ cd huge-project/path/to/sub-folder-project1
$ cd ..
```
3. 開始執行 git 指令分開 sub-folder-project1
```shell
# git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME
$ git filter-branch --prune-empty --subdirectory-filter sub-folder-project1 develop
```
4. 將分離出來的 sub-folder-project1 加上遠端資訊並且 push
```shell
$ git remote add subproject1 git@bitbucket.org:user/sub-folder-project1
$ git push -u origin develop
```
這樣就大功告成了啊~~
不過原本的 huge-project 的 develop 就會因此而亂掉, 若還需要繼續使用的話, 建議砍掉重新 clone 一份
參考: [https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/](https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言