[Git] branch & merge

cheon2308
|2022. 10. 28. 14:00
728x90

 

목차

  1. Git branch
  2. Git merge

1. Git branch

 

개요

 

  • 브랜치(Branch)는 나뭇가지라는 뜻으로, 여러 갈래로 작업 공간을 나누어 독립적으로 작업할 수 있도록 도와주는 Git의 도구

 

장점

 

  1. 브랜치는 독립 공간을 형성하기 때문에 원본(master)에 대해 안전
  2. 하나의 작업은 하나의 브랜치로 나누어 진행되므로 체계적인 개발이 가능
  3. Git은 브랜치를 만드는 속도가 굉장히 빠르고, 적은 용량을 소모함

 

git branch

 

  • 브랜치의 조회, 생성, 삭제와 관련된 Git 명령어
  • 조회
    • git branch # 로컬 저장소의 브랜치 목록 확인
    • git branch -r # 원격 저장소의 브랜치 목록 확인
  • 생성
    • git branch {브랜치 이름} # 새로운 브랜치 생성
    • git branch {브랜치 이름} {커밋 ID} # 특정 커밋 기준으로 브랜치 생성
  • 삭제
    • git branch -d {브랜치 이름} # 병합된 브랜치만 삭제 가능
    • git branch -D {브랜치 이름} # 강제 삭제

 

git switch

 

  • 현재 브랜치에서 다른 브랜치로 이동하는 명령어
  • git switch {브랜치 이름} # 다른 브랜치로 이동
  • git switch –c {브랜치 이름} # 브랜치를 새로 생성 및 이동
  • git switch –c {브랜치 이름} {커밋 ID} # 특정 커밋 기준으로 브랜치 생성 및 이동
  • switch하기 전에, 해당 브랜치의 변경 사항을 반드시 커밋 해야함을 주의 할 것!
    • 다른 브랜치에서 파일을 만들고 커밋 하지 않은 상태에서 switch를 하면 브랜치를 이동했음에도 불구하고 해당 파일이 그대로 남아있게 됨

 

※ HEAD

  • "This is a pointer to the local branch you're currently on."
  • HEAD는 현재 브랜치를 가리키고, 각 브랜치는 자신의 최신 커밋을 가리키므로 결국 HEAD가 현재 브랜치의 최신 커밋을 가리킨다고 할 수 있음
  • git log 혹은 cat.git/HEAD를 통해서 현재 HEAD가 어떤 브랜치를 가리키는지 알 수 있음

 

  • 결국 git switch는 현재 브랜치에서 다른 브랜치로 HEAD를 이동시키는 명령어

 


2. Git merge

 

git merge

 

  • 분기된 브랜치(Branch)들을 하나로 합치는 명령어
  • master 브랜치가 상용이므로, 주로 master 브랜치에 병합
  • git merge {합칠 브랜치 이름}
    • 병합하기 전에 브랜치를 합치려고 하는, 즉 메인 브랜치로 switch 해야함
    • 병합에는 세 종류가 존재
      1. Fast-Forward
      2. 3-way Merge
      3. Merge Conflict

 

Fast-Forward

 

 

 

 

3-way Merge

 

 

Merge Conflict

 

  • 두 브랜치에서 같은 부분을 수정한 경우, Git이 어느 브랜치의 내용으로 작성해야 하는지 판단하지 못하여 충돌(Conflict)이 발생했을 때 이를 해결하며 병합하는 방법
  • 보통 같은 파일의 같은 부분을 수정했을 때 자주 발생

 

 

※ 참고 - 충돌은 언제 일어나는가?

 

  • 두 브랜치에서 같은 파일의 같은 부분을 수정 후 병합하는 경우 => 충돌(Conflict) 

 

728x90

'Tool > Git' 카테고리의 다른 글

[Git] Fork & Pull model  (0) 2022.10.28
[Git] workflow  (0) 2022.10.28
[Git] reset & revert  (0) 2022.10.28
[Git] Undoing(되돌리기)  (0) 2022.10.28
[Git] 기본 설정 및 조작  (0) 2022.10.28