Git 8회차. 브랜치 병합과 충돌 해결
🔀 Git 8회차. 브랜치 병합과 충돌 해결 - git merge 완벽 이해
브랜치를 만들었다면, 이제는 병합(merge)하는 방법도 알아야겠죠? 이번 회차에서는 브랜치를 하나로 합치는 방법과 충돌(conflict) 상황을 해결하는 법까지 실전 예시로 알려드릴게요 😊
🧩 git merge란?
git merge
는 두 개의 브랜치를 하나로 합치는 명령어입니다. 주로 기능 개발이 완료된 feature 브랜치를 main이나 develop 브랜치에 병합할 때 사용됩니다.
📌 예시 흐름
main ───▶───┐
└──────▶─── merge (병합)
feature ─▶───┘
병합은 브랜치 간의 변경사항을 통합하는 과정이기 때문에 Git의 핵심 기능 중 하나예요. 하지만 병합할 때 코드가 충돌(conflict)할 수도 있어요! 이 부분도 함께 다뤄볼게요 👇
🔀 병합의 2가지 방식: Fast-forward vs Non-fast-forward
1. Fast-forward 병합
브랜치 간 변경 내용이 겹치지 않고, 직선 상의 기록이라면 그냥 브랜치 포인터만 이동하면 됩니다.
main: A → B
feature: B → C → D
→ git merge feature → main은 D로 이동만 하면 됨
이것이 Fast-forward 병합입니다. 기록이 깔끔하다는 장점이 있어요.
2. Non-fast-forward 병합
양쪽 브랜치에서 서로 다른 커밋이 추가된 경우엔 Git이 자동으로 병합 커밋을 만들어줍니다.
main: A → B → C
feature: B → D → E
→ git merge 시 새로운 커밋 F (Merge commit)이 생김
이 방식은 브랜치 기록을 유지할 수 있다는 장점이 있어요.
🛠️ 실전: git merge 사용법
예를 들어, feature/login
브랜치를 main
브랜치에 병합한다고 가정해볼게요.
main
브랜치로 이동
git switch main
feature/login
병합
git merge feature/login
이제 feature/login
브랜치의 변경 내용이 main
브랜치에 반영됩니다 🎉
⚠️ 충돌(conflict)이 발생했을 때
같은 파일의 같은 부분을 두 브랜치에서 동시에 수정한 경우, Git은 어떤 내용을 선택해야 할지 몰라 충돌이 발생합니다.
💥 충돌 예시
- main 브랜치:
main.py
에서 print("버전 A") - feature 브랜치: 같은 줄에서 print("버전 B")
병합 시 출력
Auto-merging main.py
CONFLICT (content): Merge conflict in main.py
Automatic merge failed; fix conflicts and then commit the result.
파일 내용 확인
<<<<<<< HEAD
print("버전 A")
=======
print("버전 B")
>>>>>>> feature/login
HEAD는 현재 브랜치(main)의 코드, 아래는 병합하려는 브랜치(feature/login)의 코드입니다. 이 부분을 손으로 직접 수정하고 저장하면 됩니다.
✔️ 충돌 해결 후 병합 완료
git add main.py
git commit
Git은 병합 충돌이 해결되었음을 인식하고 병합 커밋을 만들어줍니다 ✅
💡 충돌 방지 팁
- ✔️ 병합 전 항상
git pull
로 최신 코드 받아오기 - ✔️ 한 파일을 여러 명이 동시에 수정하지 않기
- ✔️ PR(Pull Request)을 활용한 코드 리뷰로 변경 사항 확인
충돌은 개발 과정에서 흔히 있는 일이지만, 규칙과 커뮤니케이션만 잘 지키면 쉽게 관리할 수 있어요 😊
📌 요약 정리
- ✔️
git merge
는 브랜치 병합 명령어입니다 - ✔️ Fast-forward는 단순 포인터 이동, Non-fast-forward는 병합 커밋 생성
- ✔️ 충돌이 발생하면 파일 내에서 수동으로 수정하고
git add
→git commit
으로 해결
이제 여러 브랜치를 자유롭게 병합하고 충돌도 자신 있게 해결할 수 있겠죠? 💪 다음 회차에서는 실무에서 자주 쓰이는 브랜치 전략을 더 깊게 다뤄볼게요!
📎 다음 회차 예고
9회차. Git에서 자주 쓰는 명령어 모음
✔️ git log --oneline, git reset, git stash, git reflog 등