Skip to main content

[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를 이용하면 삭제할 수 있다.



참고자료