728x90
목차
- Git branch
- Git merge
1. Git branch
개요
- 브랜치(Branch)는 나뭇가지라는 뜻으로, 여러 갈래로 작업 공간을 나누어 독립적으로 작업할 수 있도록 도와주는 Git의 도구
장점
- 브랜치는 독립 공간을 형성하기 때문에 원본(master)에 대해 안전함
- 하나의 작업은 하나의 브랜치로 나누어 진행되므로 체계적인 개발이 가능
- 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 해야함
- 병합에는 세 종류가 존재
- Fast-Forward
- 3-way Merge
- 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 |