깃 & 깃허브 정리 4장
브랜치로 나누어 관리하기
브랜치(branch)는 영어로 나뭇가지를 의미한다.
→ 버전을 여러 흐름으로 나누어 관리하는 방법이다.
브랜치를 이용하여 작업하는 방법
- 브랜치를 나눈다.
- 각자의 브랜치에서 작업한다.
- (필요한 경우) 나눈 브랜치를 합친다.
브랜치를 나누고 합쳐보기
- 깃이 제공하는 가장 기본적인, 최초의 브랜치를 master 브랜치라고 한다.
- HEAD는 기본적으로 현재 작업 중인 브랜치의 최신 커밋을 가리키는 표시이다.
→ 브랜치를 나누고 합치는 과정에서 위치를 자유자재로 바꿀 수 있다.
- 체크아웃이란 특정 브랜치에서 작업할 수 있도록 작업 환경을 바꾸는 것을 의미한다.
※ 실무에서는 브랜치의 이름을 암묵적으로 정해두는 경우가 많다.
ex) '새로운 기능을 개발하기 위한 브랜치' → 'feature/<새 기능>'
'릴리스를 준비하기 위한 브랜치' → 'release/<릴리스 번호>'
브랜치 병합하기
- 병합하려는 브랜치로 체크아웃한다. ( foo 브랜치를 master 브랜치로 병합하려고 하면 master 브랜치로 )
- 병합시키려는 브랜치에서 우클릭 후 '현재 브랜치로 <브랜치 이름> 병합' 클릭
브랜치를 병합하고 더 이상 병합시킨 브랜치에서 작업하지 않을 예정이라면 삭제하는 것이 좋다.
충돌 해결하기
충돌이란 병합하려는 두 브랜치가 서로 같은 내용을 다르게 수정한 상황을 의미한다.
충돌이 발생하면 스테이지에 올라가지 않은 파일과 스테이지에 올라간 파일이 추가된다.
스테이지에 올라가지 않은 파일을 확인해보면
=====기호를 기준으로 <<<<<에 현재 체크아웃한 브랜치의 내용이 적혀 있고,
>>>>>에 병합하려는 브랜치의 내용이 적혀있다.
<<<<<<< HEAD
master #현재 브랜치 내용
=======
foo #병합하려는 브랜치 내용
>>>>>>> foo
이 파일 위에서 마우스 우클릭 후 충돌 해결을 클릭하면 '내것'을 이용해 해결과 '저장소'것을 사용하여 해결 항목이 있다.
'내것'은 현재 체크아웃된 브랜치를 의미하고 '저장소'는 병합하려는 브랜치의 내용을 의미한다.
충돌을 해결한 뒤 적혀있던 커밋 메세지와 함께 다시 커밋해야 브랜치가 올바르게 병합된다.
브랜치 재배치하기
브랜치의 재배치는 rebase라고 한다.
rebase는 브랜치가 뻗어나온 기준점을 변경하는 것이다.
재배치하려는 브랜치로 체크아웃하고, 재배치하려는 브랜치 커밋에 우클릭해서 재배치를 클릭한다.