[git subtree] 깃, 서브디렉토리를 변경이력과 함께 분리하기
git 프로젝트 중에서 일부 디렉토리를 분리하고 싶을때 아래의 방법을 이용하면 된다. (이때 중간에 디렉토리 이름을 변경했으면 그 전 히스토리들은 복사되지 않는다.)
1. git bash 실행
프로젝트에서 git bash
를 실행
하고 분리할 디렉토리 이름
을 아래 명령어에 넣어 실행한다.
git subtree split -P 서브디렉토리이름 -b 브랜치이름
2. 생성한 브랜치로 이동
git checkout 브랜치이름
3. master 브랜치로 이름 변경
브랜치 이름을 master로 변경하고 싶으면, 아래 명령어들을 순차적으로 입력한다.
git branch -d master
git branch -m master
4. 원격 저장소에 푸시
github에서 원격저장소를 새로 만든 뒤 아래 명령어를 입력한다.
git push 원격저장소주소 master
5. 기존 프로젝트에서 히스토리 삭제
기존 프로젝트에서는 히스토리가 남게 되는데, cherry-pick
또는 rebase
를 이용하면 삭제할 수 있다.