고아 브랜치는 하나의 git repository에서 다른 브랜치나 커밋으로부터 단절된 새로운 history를 가지는 브랜치를 말한다. 다른 브랜치와 독립적으로 운영할 수 있기 때문에 설정 파일이나, 다른 프로젝트를 생성하기보다는 하나의 프로젝트에서 진행하고 싶을 때 사용하면 유용하다.
테스트용으로 만든 repository를 clone하였다. 그 후, 아래 명령어로 해당 repository에 존재하는 branch 목록을 조회하면 master branch만 존재한다는 것을 알 수 있다.
git branch
동일한 repository이지만 master 브랜치와는 독립적인 브랜치를 생성하기 위해 아래 명령어를 입력한다.
git checkout --orphan orphan_test
생성하고 나면 기존에 존재하던 파일들은 모두 Staged 상태가 되어 있음을 알 수 있다.
아래 명령어를 통해 해당 디렉토리 내에 있는 모든 파일들을 제거한다.
git rm --cached -r .
rm -rf ./*
이렇게 되면 하나의 repository에 독립적인 2개의 브랜치가 생성된 상태가 된 것이다. 하지만 아직 remote repository에는 브랜치가 생성되지 않았기 대문에 아래 명령어로 remote에도 local과 동일한 브랜치를 생성해주도록 한다.
git push origin orphan_test
성공적으로 push가 완료되면 github에서 branch가 생성되어 있음을 확인할 수 있다.
원격 repository에 생성한 브랜치를 새로 작업 디렉토리로 가져와보겠다.
작업 디렉토리를 새로 생성해 git 저장소를 생성한다.
mkdir workspace
cd workspace
git init
그 후, 원격 repository를 추가한다. git remote -v
명령어를 입력하면 repository 목록을 출력한다.
git remote add origin [git 주소]
git remote -v
원격 repository에 있는 데이터를 fetch 한다.
git fetch origin
데이터를 가져오고나서 브랜치 목록을 확인하면 위에서 생성했던 고아 브랜치가 보일 것이다. 이 브랜치로 전환한다. 그러면 해당 브랜치에서 작업을 할 수 있게 된다.
git branch -r
git checkout [브랜치 이름]