https://www.youtube.com/watch?v=1I3hMwQU6GU&t=121s
얄팍한 코딩사전님의 강의를 보고 작성했습니다.
Git의 가장 강력한 기능 중 하나는 바로 **브랜치(Branch)**입니다. 브랜치를 사용하면 기존 프로젝트 코드에 영향을 주지 않고, 독립적인 작업 공간을 만들어 새로운 기능을 개발하거나 버그를 수정할 수 있습니다. 🌿
이는 다음과 같은 상황에서 필수적입니다.
- 여러 작업의 독립적인 진행: A 기능과 B 기능을 동시에 개발할 때, 각자의 브랜치에서 작업하여 서로의 코드에 영향을 주지 않을 수 있습니다.
- 안정적인 버전 관리: 실제 배포 버전은 main 브랜치에 두고, 새로운 기능은 develop 브랜치에서 개발하여 안정성이 검증되었을 때만 합치는 방식으로 안정적인 프로젝트 운영이 가능합니다.
## 1. 브랜치 기본 명령어
| 기능 | 명령어 | 설명 |
| 생성 | git branch {브랜치명} | 새로운 브랜치를 생성합니다. |
| 목록 확인 | git branch | 모든 로컬 브랜치의 목록을 보여줍니다. |
| 이동 | git switch {브랜치명} | 지정한 브랜치로 작업 공간을 전환합니다. |
| 생성+이동 | git switch -c {브랜치명} | 브랜치를 새로 생성하고 즉시 그 브랜치로 이동합니다. |
| 이름 변경 | git branch -m {변경할이름} | 현재 브랜치의 이름을 변경합니다. |
| 삭제 | git branch -d {브랜치명} | 병합이 완료된 브랜치를 삭제합니다. (-D는 강제 삭제) |
## 2. 브랜치 이력 확인하기
git log는 현재 브랜치의 커밋 이력만 보여줍니다. 프로젝트 전체의 브랜치 흐름을 보려면 다음 명령어를 사용할 수 있습니다.
Bash
git log --all --decorate --oneline --graph
하지만 이 명령어는 터미널에서 보기에 다소 복잡할 수 있습니다. Sourcetree와 같은 GUI 툴을 사용하면 브랜치가 생성되고 병합되는 전체 과정을 시각적으로 훨씬 쉽게 파악할 수 있습니다.
## 3. 브랜치 합치기: merge vs. rebase 🔀
독립적으로 작업한 브랜치의 내용을 다른 브랜치로 합치는 방법은 크게 merge와 rebase 두 가지가 있습니다. 두 방식의 가장 결정적인 차이는 **"브랜치의 작업 이력을 어떻게 남길 것인가?"**에 있습니다.
[Image comparing Git merge vs. rebase]
### Merge: "두 갈래의 역사를 하나로 합칩니다"
- 핵심 동작: 두 브랜치의 변경 이력을 그대로 유지하면서, 두 브랜치를 부모로 하는 새로운 **'병합 커밋(Merge Commit)'**을 만들어냅니다.
- 결과: 커밋 히스토리에 어떤 브랜치에서 작업했고, 언제 합쳐졌는지가 명확하게 남습니다. 히스토리가 있는 그대로 보존됩니다.
- 사용법: 합쳐질 브랜치(예: main)로 이동한 뒤, 합칠 브랜치(예: feature)를 병합합니다.
-
Bash
git switch main git merge feature
### Rebase: "역사를 깔끔하게 재정렬합니다"
- 핵심 동작: 한 브랜치의 변경 이력(커밋)들을 다른 브랜치의 최신 커밋 뒤로 '옮겨서 이어 붙이는' 방식입니다.
- 결과: 마치 처음부터 main 브랜치에서 순차적으로 작업한 것처럼, 커밋 히스토리가 하나의 깨끗한 직선 형태로 만들어집니다. 기존 브랜치의 분기점과 같은 흔적은 사라집니다.
- 사용법: 옮기고 싶은 브랜치(예: feature)로 이동한 뒤, 기반이 될 브랜치(예: main)를 지정합니다.
-
Bash
git switch feature git rebase main
## 4. 충돌 해결하기 (Resolving Conflicts)
두 브랜치에서 같은 파일의 같은 부분을 다르게 수정했을 경우, Git은 어떤 것을 선택해야 할지 몰라 **충돌(Conflict)**을 발생시키고 작업을 멈춥니다.
### merge에서의 충돌 해결
- 충돌이 발생한 파일을 열면 <<<<<<<, =======, >>>>>>>와 같은 마커로 충돌 부분이 표시됩니다.
- 해당 부분을 직접 코드를 수정하여 원하는 최종 형태로 만듭니다.
- 수정이 완료되면, 파일을 저장하고 git add .와 git commit을 실행하여 병합을 완료합니다.
- 만약 병합을 취소하고 싶다면 git merge --abort를 실행합니다.
### rebase에서의 충돌 해결
rebase는 커밋을 하나씩 옮겨 붙이는 과정이므로, 충돌이 여러 번 발생할 수 있습니다.
- 첫 번째 충돌이 발생하면, 위와 동일하게 파일을 직접 수정합니다.
- 수정 후 git commit이 아닌 git add .를 먼저 실행합니다.
- 그다음 git rebase --continue를 실행하여 다음 커밋을 계속해서 옮깁니다.
- 만약 이 과정에서 또 충돌이 발생하면 1~3번 과정을 반복합니다.
- rebase 전체를 취소하고 싶다면 git rebase --abort를 실행합니다.
'개발 공부 > 기타 공부' 카테고리의 다른 글
| [Git/GitHub] 커밋 컨벤션과 Issue로 프로젝트 관리 200% 끌어올리기 (0) | 2026.03.25 |
|---|---|
| 리눅스 명령어 (1) | 2025.10.27 |
| Git & Github 공부 - Git 기본 (1) | 2025.09.15 |
| 비즈니스 로직 vs. 도메인 로직 (0) | 2025.09.14 |
| 최단 경로 탐색 알고리즘 : 다익스트라, 벨만-포드, 플로이드-워셜 (0) | 2025.09.07 |