git 의 branch 와 tag 그리고 head 의 이해
git 사용중 branch 를 만들고 tag 를 긋고 head 를 이동한다는 얘기를 많이 듣는다.
그런데
git checkout 명령어는
git checkout some-branch
git checkout some-tag
둘다 동작을 한다. 책을 읽어보면 branch 나 tag 나 HEAD 파일의 정보를 수정한다는 것을 알 수 있다. 하지만 쉽게 이해가 가지 않는 사람이 있다. 나같은...
난 처음엔 특정 branch 에 tag를 긋고 tag 로 이동하면 해당 branch로 갈 수 있을것이라 생각했다. 그런데 아니네... ^^
그래서 여기다 정리를 한다. 정리를 해놔야 확실히 내것이 되니까. ^^
branch 는 말 그대로 가지를 뻗어나간다고 생각하면 된다. 이건 쉽게 이해가 갔다.
tag 를 긋는다는건?
소스의 수정 history 중 어느 부분에 표시를 해 놓는 것이다. 어느 branch에서 나온것 인지는 표시가 없다.
git checkout sometag 명령어로 특정 sometag 로 이동을 했다고 하자.
그럼 여기서 소스를 수정할 수 있을까?
안된다. 우리가 소스를 수정할 수 있는 곳은 각 branch 의 가장 최신 소스의 HEAD 일때 가능하다.
history의 중간을 수정하면 history 관리가 안되니 당연한거다.
tag 를 긋는다는건 특정 시점의 표시를 해서 그곳으로 쉽게 이동할 수 있는 것이지 branch의 개념이 아닌것이였다.
그래서 소스 확인은 tag 이동으로 하고 소스의 수정은 branch 로 이동해서 한다.
git branch 명령을 실행해 보면 알 수 있다.
git checkout some-tag 로 이동하면
git branch 했을때 현재 branch 가 표시되지 않는다.
OK?
git rebase 명령어 중 유용한 옵션 option --onto (0) | 2012.11.30 |
---|---|
git reset 명령어와 옵션 (1) | 2012.11.22 |
repo init / repo sync 에 사용되는 manifest.xml 파일에 대한 설명 (2) | 2012.11.16 |
android repository mirror 운영시 local branch 사용 (0) | 2012.11.15 |
Android source mirror 하는 방법 (0) | 2012.11.12 |