본문 바로가기
개발

⚔️ Git 충돌(conflict) 해결 방법: 실전 가이드

by 비트-바이트 2025. 3. 26.
반응형

📌 개요

협업 중 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
 

🔧 해결 방법:

  1. 수동으로 원하는 내용으로 수정
  2. 저장 후 아래 명령어로 충돌 해결 완료 알림
git add test.txt
git commit

⚠️ 충돌 해결 시 주의할 점

  • 내용 덮어쓰기 주의: 충돌난 부분을 강제로 덮어쓰면 다른 사람의 작업 내용이 사라질 수 있음
  • 충돌 후 커밋 안하면 병합 완료가 안 됨
  • IDE 사용 권장: VS Code, WebStorm 등에서는 시각적으로 비교하고 선택 가능

💡 팁: 충돌 피하는 습관

  • 작업 전 git pull --rebase 습관화
  • 너무 오래된 브랜치는 merge 전에 최신 develop/main 기준으로 미리 맞춰두기
  • 같은 파일에서 작업하지 않도록 역할 분리 협의

✅ 마무리

Git 충돌은 귀찮고 헷갈리지만, 실은 협업을 안전하게 하기 위한 장치입니다.
충돌을 겁내기보다, 어떻게 해소하고 깔끔하게 기록으로 남길지가 더 중요해요.

코드를 짠 것만큼이나, 어떻게 커밋하고 병합했는지도 실력입니다.


📎 다음 글 예고

  • REST vs GraphQL: 언제 무엇을 써야 할까?
  • GitHub에서 PR 충돌 방지하는 꿀팁
  • 자동 병합(Auto Merge) 설정하는 법
반응형