Git Branch
독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해서 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다.
릴리스 버전 이력
기능 추가 이력
버그 수정 이력
또한 이렇게 만들어진 브랜치는 다른 브랜치와 병합, 즉 머지(Merge) 함으로써 작업한 내용을 다시 하나의 브랜치로 모을 수 있다. 결과적으로 브랜치는 특정 커밋에 대한 참조에 지나지 않는다. 브랜치를 많이 만들어도 메모리나 디스크 공간에 부담이 되지 않기 때문에, 프로젝트 혹은 작업을 작은 단위로 잘게 나누는 것이 좋다.
하나의 커밋과 그 부모 커밋들을 포함하는 작업내역
☞ git branch 를 만들고, 해당 branch 로 이동하기
$ git branch [브랜치 명]
$ git checkout [브랜치 명]
☞ git branch 를 만들고, 해당 branch로 checkout 까지 한번에 수행
$ git checkout -b [브랜치 명]
☞ git branch merge (브랜치 합치기)
$ git branch [브랜치 명]
브랜치 생성
$ git checkout [브랜치 명]
브랜치 이동
$ git commit
해당 브랜치로 커밋
$ git chekout master
마스터 이동
$ git commit
마스터로 커밋
$ git merge [브랜치 명]
해당 브랜치와 머지(병합)
저장소를 처음 만들면, 깃은 "master" 라는 이름의 브랜치를 만들어 둔다. 이 새로운 저장소에 새로운 파일을 추가한다거나 혹은 추가한 파일의 내용을 변경하여 그 내용을 저장(커밋) 하는 것은 "master" 라는 이름의 브랜치를 통해 처리할 수 있는 일이 된다. 결국, checkout 을 통해 해당 브랜치로 이동하지 않는 이상 모든 작업은 "master" 브랜치에서 이루어진다.
☞ git branch 삭제하기
$ git branch -d [브랜치 명]
Git Rebase
깃 브랜치끼리 작업을 합치는 두번째 방법이다. 리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨어트려 놓는 것이다. 리베이스를 이용하게 되면 커밋들의 흐름을 보기좋게 한 줄로 만들 수 있다는 장점이 있다. 이 밖에 리베이스를 이용하게 되면 저장소의 커밋 로그와 이력이 한결 깨끗해진다.
☞ 두 개의 브랜치가 존재, 특정 브랜치로 체크아웃한 상태에서 다른 브랜치 rebase
$ git rebase [브랜치 명]
해당 브랜치 하위에 rebase 한다.
HEAD
HEAD 는 현재 체크아웃된 커밋을 가리킨다. 다시 말하면, 현재 작업 중인 커밋을 의미한다. 결국 HEAD 는 항상 작업트리의 가장 최근 커밋을 가리킨다. 사실 작업트리에 변화를 주는 git 의 명령어들은 대부분 HEAD 를 변경하는 것으로부터 시작된다.
일반적으로 HEAD 는 브랜치의 이름을 가리키고 있다. 커밋을 하게 되면 해당 브랜치의 상태가 바뀌고 이는 HEAD 를 통해서 확인할 수 있다.
상대 참조 (Relative Ref)
우리가 기억할만한 지점(브랜치 혹은 HEAD)에서 출발해서 이동아여 다른 지점에 도달해 작업을 할 수 있다.
한 번에 한 커밋 위로 움직이는 ^
한 번에 여러 커밋 위로 올라가는 ~<num>
$ git checkout [브랜치 명]^
'버전관리시스템' 카테고리의 다른 글
20190120 Git Remote (0) | 2019.01.20 |
---|---|
20190106 Git Fork & Git Clone 차이 (0) | 2019.01.06 |
20181006 깃 파일 삭제 명령어 (0) | 2018.10.06 |
20180707 Progit (0) | 2018.07.07 |
20180125 버전관리시스템 (Git) (0) | 2018.01.25 |