반응형
📌 개요
협업 중 merge나 rebase를 하다 보면 갑자기 등장하는 빨간 메시지…
CONFLICT (content): Merge conflict in 파일명
처음 보면 당황스럽고, 익숙해져도 귀찮은 Git 충돌(conflict)!
이번 글에서는 Git 충돌의 원인, 종류, 그리고 정확하고 안전하게 해결하는 방법을 단계별로 정리해드립니다.
🧠 핵심 개념
🤯 Git 충돌이란?
두 명 이상의 개발자가 동일한 파일의 같은 부분을 다르게 수정했을 때, Git이 어떤 걸 유지해야 할지 모를 때 발생합니다.
이는 merge, rebase, cherry-pick, pull 등 브랜치 통합 과정에서 주로 발생합니다.
🔥 충돌 발생 예시
- A 개발자: main 브랜치에서 README.md 수정 후 push
- B 개발자: develop 브랜치에서 같은 줄 수정 후 merge 시도
→ 같은 줄이 다르니까 충돌 발생
💡 실전 팁 또는 실습
🛠️ 충돌 상황 직접 만들어보기
# 1. main 브랜치에서 파일 수정 후 커밋
git checkout main
echo "버전 A" > test.txt
git add . && git commit -m "main 수정"
# 2. 브랜치 생성해서 같은 파일 수정
git checkout -b conflict-test
echo "버전 B" > test.txt
git add . && git commit -m "브랜치 수정"
# 3. 다시 main으로 와서 브랜치 병합
git checkout main
git merge conflict-test
→ CONFLICT 발생!
✍️ 충돌 파일 확인과 해결
Git은 충돌 부분을 아래처럼 표시해줍니다.
<<<<<<< HEAD
버전 A
=======
버전 B
>>>>>>> conflict-test
🔧 해결 방법:
- 수동으로 원하는 내용으로 수정
- 저장 후 아래 명령어로 충돌 해결 완료 알림
git add test.txt
git commit
⚠️ 충돌 해결 시 주의할 점
- 내용 덮어쓰기 주의: 충돌난 부분을 강제로 덮어쓰면 다른 사람의 작업 내용이 사라질 수 있음
- 충돌 후 커밋 안하면 병합 완료가 안 됨
- IDE 사용 권장: VS Code, WebStorm 등에서는 시각적으로 비교하고 선택 가능
💡 팁: 충돌 피하는 습관
- 작업 전 git pull --rebase 습관화
- 너무 오래된 브랜치는 merge 전에 최신 develop/main 기준으로 미리 맞춰두기
- 같은 파일에서 작업하지 않도록 역할 분리 협의
✅ 마무리
Git 충돌은 귀찮고 헷갈리지만, 실은 협업을 안전하게 하기 위한 장치입니다.
충돌을 겁내기보다, 어떻게 해소하고 깔끔하게 기록으로 남길지가 더 중요해요.
코드를 짠 것만큼이나, 어떻게 커밋하고 병합했는지도 실력입니다.
📎 다음 글 예고
- REST vs GraphQL: 언제 무엇을 써야 할까?
- GitHub에서 PR 충돌 방지하는 꿀팁
- 자동 병합(Auto Merge) 설정하는 법
반응형
'개발' 카테고리의 다른 글
🛠 실습으로 배우는 Express 기반 REST API 만들기 (0) | 2025.03.26 |
---|---|
⚔️ REST vs GraphQL: 언제 무엇을 써야 할까? (1) | 2025.03.26 |
🤝 실전 협업 시 Git 사용법 (1) | 2025.03.26 |
🌿 Git 브랜치 전략 (Basic & Git Flow) (0) | 2025.03.26 |
📡 REST API 완전 정복: 개념부터 실무 적용까지 (0) | 2025.03.26 |