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
Posted by doubler
,