티스토리 뷰

반응형
이 문서는 "지옥에서 온 문서 관리자 깃&깃허브 입문 - 이고잉, 고경희 지음" 책의 내용을 정리한 것입니다.

03. 깃과 브랜치

03-1 브랜치란?

브랜치 기능 살펴보기

브랜치는 커밋을 가리키는 포인터와 비슷하다고 생각하면 된다.
기본적으로 master 브랜치가 생성되는데 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킨다.

 

분기(branch)

  • 새 브랜치를 만들면 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있음
  • 새 브랜치를 만드는 것 = '분기(branch)한다'

브랜치 분기 과정

 

병합(merge)

  • 새 브랜치에서 원하는 작업을 다 끝내면 새 브랜치에 있던 파일을 원래 master 브랜치에 합칠 수 있음
  • 분기했던 브랜치를 master 브랜치에 합치는 것 = '병합(merge)한다'

브랜치 병합 과정

 

03-2 브랜치 만들기

새 브랜치 만들기 - git branch

# 브랜치 확인
$ git branch
# 새 브랜치 생성
$ git branch <브랜치명>
  • git branch 명령으로 브랜치를 확인했을 때, 앞에 * 표시가 있는 브랜치가 현재 작업 중인 브랜치
  • 브랜치가 추가된 후에는 커밋 로그도 달라짐

 

브랜치 사이 이동하기 - git checkout

# 브랜치 이동
$ git checkout <이동할 브랜치명>

분기된 이후에 기존의 브랜치에 추가된 커밋은 새로운 브랜치에 영향을 미치지 않음

 

03-3 브랜치 정보 확인하기

브랜치의 커밋 확인하기

# 각 브랜치의 커밋 확인
$ git log --oneline --branches
# 각 브랜치와 커밋의 관계를 그래프 형태로 표시
$ git log --oneline --branches --graph

※ --oneline 옵션은 한 줄에 한 커밋씩 나타냄(간략히 확인하기 편리)

 

브랜치 사이의 차이점 알아보기

# master 브랜치와 apple 브랜치 사이의 차이점 확인
$ git log master..apple
  • 브랜치 이름 사이에 마침표 두 개(..)를 넣음 (공백 X!)
  • 마침표 왼쪽에 있는 브랜치를 기준으로 오른쪽 브랜치외 비교
  • ex) master 브랜치에는 없고 apple 브랜치에만 있는 커밋 출력

 

03-4 브랜치 병합하기

만들어진 각 브랜치에서 작업을 하다가 어느 시점에서는 브랜치 작업을 마무리하고 기존 브랜치와 합해야 합니다. 이것을 '브랜치 병합(merge)'이라고 합니다.

 

서로 다른 파일 병합하기

# 브랜치 체크아웃
$ git checkout master

# 브랜치 병합
$ git merge <병합할 브랜치명>
# 브랜치 병합 - 편집기 창을 열지 않고 자동 커밋 메시지 그대로 사용
$ git merge <병합할 브랜치명> --no-edit
# 브랜치 병합 - 편집기 커밋 메시지를 추가하거나 수정
$ git merge <병합할 브랜치명> --edit

# 브랜치 병합 확인
$ git log --oneline --branches --graph
  • 다른 브랜치의 내용을 master 브랜치로 병합할 경우, master 브랜치로 체크아웃 필요
  • 병합 시, 자동으로 vim이 실행되면서 커밋 메시지가 나타남

※ master 브랜치에서 브랜치를 분기한 후에 master 브랜치에 아무 변화가 없다면(새로운 커밋을 만들지 않았다면) 분기한 브랜치를 병합하는 것은 간단하기 때문에 '빨리 감기 병합(fast-forward merge)'라고 부름 (분기한 브랜치에서 만든 최신 커밋을 master 브랜치가 가리키게만 하면 되기 때문!)

 

같은 문서의 같은 위치를 수정했을 때 병합하기

  • 깃에서는 줄 단위로 변경 여부를 확인
  • 각 브랜치에 같은 파일 이름의 같은 줄을 수정했을 때 브랜치를 병합하면 브랜치 충돌(conflict)이 발생
  • 충돌이 발생할 경우, 해당 파일의 내용을 직접 수정해야함
  • 병합 및 충돌 해결 프로그램을 사용해도 됨(ex: P4Merge, Meld, Kdiff3, Araxis, Merge)

 

병합이 끝난 브랜치 삭제하기

브랜치를 병합한 후 더 이상 사용하지 않는 브랜치는 깃에서 삭제 가능
※ 삭제된 브랜치는 완전히 지워지는 것이 아니라 다시 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있음

# 브랜치 확인
$ git branch

# 브랜치 체크아웃
$ git checkout master

# 브랜치 삭제
$ git branch -d <삭제할 브랜치명>
  • master 브랜치에 병합하지 않은 브랜치를 삭제할 경우에는 오류 발생 -> -D 옵션을 사용해 강제로 삭제 가능
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함