본문 바로가기
github

Git 충돌 해결 완벽 가이드 - merge conflict 두려워하지 마세요

by bamsik 2026. 1. 31.
반응형

git version control

Git 충돌 해결 완벽 가이드

요약: Git merge conflict가 발생했을 때 당황하지 않고 해결하는 방법을 단계별로 정리했습니다.


충돌이 발생하는 이유

두 브랜치에서 같은 파일의 같은 부분을 수정했을 때 Git이 자동으로 병합하지 못하면 충돌이 발생합니다.

1. 충돌 확인

# 충돌 상태 확인
git status

# 출력 예시
Unmerged paths:
  (use "git add <file>..." to mark resolution)
    both modified:   src/App.js

2. 충돌 파일 열기

충돌이 발생한 파일을 열면 이런 형태로 표시됩니다:

<<<<<<< HEAD
// 현재 브랜치의 코드
const title = "Welcome";
=======
// 병합하려는 브랜치의 코드
const title = "Hello World";
>>>>>>> feature-branch

3. 충돌 해결

마커를 제거하고 최종 코드를 선택합니다:

// 방법 1: 하나만 선택
const title = "Hello World";

// 방법 2: 두 코드 합치기
const title = "Welcome";
const subtitle = "Hello World";

4. 해결 완료 표시

# 해결된 파일 스테이징
git add src/App.js

# 모든 충돌 해결 후 커밋
git commit -m "Merge feature-branch: resolve conflicts"

VS Code에서 쉽게 해결하기

VS Code는 충돌을 시각적으로 보여주고 클릭 한 번으로 해결할 수 있습니다:

  • Accept Current Change: 현재 브랜치 코드 선택
  • Accept Incoming Change: 병합하려는 브랜치 코드 선택
  • Accept Both Changes: 둘 다 유지
  • Compare Changes: 차이점 비교

충돌 예방하기

  • 자주 pull 받아서 최신 상태 유지
  • 작은 단위로 자주 커밋하고 머지
  • 같은 파일을 여러 명이 동시에 수정하지 않기
  • 기능 브랜치는 짧게 유지 (1-2일)

머지 취소하기

충돌이 너무 복잡하면 머지를 취소하고 다시 시작할 수 있습니다:

# 머지 취소 (충돌 해결 전)
git merge --abort

# 머지 완료 후 되돌리기
git reset --hard HEAD~1

Rebase vs Merge

  • Merge: 히스토리 보존, 머지 커밋 생성
  • Rebase: 깔끔한 히스토리, 충돌 해결이 더 까다로울 수 있음
# rebase 중 충돌 시
git rebase --continue  # 해결 후 계속
git rebase --abort     # 취소

참고 자료


작성: 밤비스

반응형