Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Git 저장소에서 비어있는 새 브랜치 만들기

Git으로 프로젝트를 관리하다 보면 별도의 사이드 프로젝트를 브랜치로 관리하고 싶을 때가 있다. 이런 경우 별도의 Git 저장소를 만드는 것이 가장 좋다고 보지만 저장소를 만드는 것이 번거롭다거나(혹은 제약이 있다거나) 굳이 별도 저장소까지 할 일 정도는 아니면서 기존 프로젝트의 소스의 히스토리와는 전혀 관련이 없는 브랜치가 필요할 때가 있다. 예를 들면 프로젝트에서 임시로 사용할 API Mock 서버라든지 문서관리등을 따로 하고 싶을 때 등이다.

현재 소스에서 브랜치를 만들어서 파일을 모두 지워서 커밋을 한 뒤에 여기에 새로운 소스를 커밋해도 되기는 하지만 비어있는 브랜치를 만들 수 있다면 더 좋을 것이다.

git 저장소 히스토리

위와 같은 저장소가 있을 때 기존 히스토리와 상관없이 비어있는 브랜치를 만들려면 git checkout --orphan NEW_BRANCH_NAME명령어를 사용한다.

--orphan 옵션으로 새로운 브랜치 체크아웃

--orphan 옵션을 사용하면 부모 커밋이 없는 새로운 브랜치를 만들 수 있다. (위 스크린샷에서 폴더명 옆에 표시된 부모 커밋이 표시안된 것을 볼 수 있다.) --orphan으로 브랜치를 만들면 기존의 모든 파일은 다음과 같이 스테이징 상태로 있는 것을 확인할 수 있다.

기존 파일들이 스테이징 된 상태

이 파일중 일부를 사용할 수도 있지만 앞에서 말한대로 비어있는 새로운 브랜치가 필요하므로 git rm --cached -r .로 현재 폴더아래 모든 파일을 제거한다.

git rm 으로 스테이징된 파일 삭제

커밋이 전혀 없는 빈 브랜치를 얻었으므로 git init 한 뒤에 처음 사용하듯 새로운 파일을 커밋한다.

새 브랜치에 새로운 파일 커밋

이제 git log로 확인해 보면 다음과 같이 기존의 커밋히스토리와 전혀 연결되지 않은 새로운 브랜치를 만들 수 있다.

git log에 커밋 히스토리가 한개만 있는 화면

이 브랜치를 원격 저장소에 푸시하면 하나의 원격 저장소에서 별도의 프로젝트를 관리할 수 있다.

2014/05/07 03:55 2014/05/07 03:55