Outsider's Dev Story

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

git에서 원격저장소의 branch 가져오기

git을 사용하다보면 원격저장소에서 저장소를 clone받아오는 것이 가장 많이 하는 일일것입니다. 보통 활발히 진행되고 있는 저장소라면 브랜치가 있기 마련인데 clone을 받아왔을때 이 branch들은 로컬로 가져오지 않습니다. 왠지 Subversion적인 사고로는 땡기면 다같이 와야할것 같은 생각이 드는데 git은 그렇게 동작하지 않습니다.

어쨌든 공동작업을 하거나 다른 사람의 소스를 볼때 원격의 브랜치도 가져와야 할 일이 있습니다.

branch 리스트 보는 화면

일단 clone받아온 곳에서 git branch를 하면 로컬저장소의 브랜치 목록을 볼 수 있는데 git branch -r을 하면 원격저장소의 브랜치 리스트를 볼 수 있고 git branch -a를 하면 모든 브랜치의 리스트를 볼 수 있습니다.

원격브랜치를 checkout하는 화면

checkout은 브랜치나 태그로 작업트리를 변경하는 명령어입니다. git checkout origin/autoconf처럼 명령어를 origin/autoconf처럼 원격저장소에 사용하면 원격저장소의 브랜치로 작업트리가 변경이 됩니다. 하지만 위의 메시지에 나온대로 detached HEAD상태이고 소스를 보고 변경도 해볼수 있지만 이곳에서 변경한 것은 잠시 확인해 보는 용도로만 사용될뿐 저장되지 않습니다. 다른 브랜치로 checkout을 하면 사라집니다. 잠시 테스트를 해보거나 확인 용도라면 이렇게 하는 것이 많지만 원하는 액션은 아닙니다.

원격브랜치를 checkout하는 화면

브랜치를 추적하고 싶다면 git checkout -b 생성할브랜치이름 원격브랜치이름처럼 해주어야 합니다. -b 옵션은 브랜치를 만들면서 해당 작업트리로 checkout까지 하라는 옵션입니다. 이제 branch명령어를 사용해보면 로컬에 새로운 브랜치가 생긴것을 볼 수 있습니다.이렇게 하는 이유는 Subversion과는 다르게 git같은 경우는 여러개의 원격저장소를 연결할 수 있고 그중에는 브랜치명이 겹칠 수도 있기 때문으로 보입니다. 일반적으로는 로컬에서도 같은 브랜치명을 사용하게 되는데 위처럼 이름을 적어주는게 귀찮다면 git checkout -t origin/eventsource처럼 생성하면 원격저장소의 이름을 그대로 사용합니다.
2011/05/13 00:56 2011/05/13 00:56