나만의공간

Git 15회차. 충돌(conflict) 발생 시 대처법 본문

IT/Git

Git 15회차. 충돌(conflict) 발생 시 대처법

밥알이 2025. 7. 17. 17:08

⚔️ Git 15회차. 충돌(conflict) 발생 시 대처법 - 실무형 해결 전략까지

Git을 쓰다 보면 피할 수 없는 상황, 바로 충돌(conflict)입니다. 이번 회차에서는 충돌이 언제, 왜 발생하는지부터 실제로 생겼을 때 어떻게 해결하는지까지 자세히 안내드릴게요 😊


🤔 Git 충돌이란?

Git 충돌은 두 개 이상의 브랜치에서 같은 파일의 같은 부분을 동시에 수정했을 때 발생해요. Git은 병합할 때 자동으로 처리하려고 하지만, 같은 줄을 서로 다르게 수정한 경우 어떤 걸 남겨야 할지 판단하지 못해 충돌이 발생합니다.

💥 충돌 예시

// 원래 main 브랜치 코드
const title = 'Welcome';

// 브랜치 A에서 수정
const title = 'Hello';

// 브랜치 B에서 수정
const title = 'Hi';

→ 브랜치 A와 B를 병합할 때 충돌이 발생합니다.


📌 충돌이 발생하는 주요 시점

  • ✔️ git merge
  • ✔️ git rebase
  • ✔️ pull 명령으로 최신 코드를 가져올 때

협업 중 충돌은 흔한 일입니다. 중요한 건 어떻게 해결하느냐예요 💡


🛠️ 충돌 해결 방법

1️⃣ 충돌 메시지 확인

git status

→ 어떤 파일에서 충돌이 발생했는지 알려줍니다.

2️⃣ 충돌 구간 열기

파일을 열어보면 다음과 같은 표시가 있어요:


<<<<<<< HEAD
const title = 'Hello';
=======
const title = 'Hi';
>>>>>>> feature/update-title

<<<<<<< 부터 =======, >>>>>>>까지가 충돌 구간입니다.

3️⃣ 수동으로 수정

const title = 'Hello and Hi!';

원하는 방식으로 코드를 정리한 뒤 저장하세요.

4️⃣ 충돌 해결 후 add

git add 충돌해결한파일.js

5️⃣ 커밋

git commit

Git은 충돌이 해결됐음을 인식하고 병합을 완료합니다!


반응형

⚙️ VSCode로 충돌 쉽게 해결하기

VSCode는 충돌이 발생하면 “Accept Incoming”, “Accept Current”, “Accept Both” 버튼이 자동으로 나타납니다.

  • ✔️ Accept Current: 내가 작업한 내용 유지
  • ✔️ Accept Incoming: 상대방 브랜치 내용 유지
  • ✔️ Accept Both: 둘 다 유지

이 버튼만 눌러도 충돌 해결이 완료됩니다 👌


🚨 실무에서 자주 발생하는 충돌 상황

  • ✔️ 여러 명이 같은 파일의 동일한 부분 수정
  • ✔️ 브랜치 병합 전에 pull을 안 한 경우
  • ✔️ IDE에서 자동으로 생성하는 설정 파일 충돌

이런 상황을 피하려면 병합 전에 항상 최신 코드를 pull하고, 작업 영역을 분리하는 브랜치 전략이 중요합니다.


🛡️ 충돌을 예방하는 꿀팁

  • ✔️ 브랜치를 자주 pull하고 최신 상태 유지
  • ✔️ 작업 단위를 작게 나눠서 자주 push
  • ✔️ 동일한 파일의 동일한 부분을 여러 명이 수정하지 않도록 역할 분담
  • ✔️ 병합 전에 git fetch + git diff로 변경 내역 확인

📌 오늘의 핵심 요약

  • ✔️ Git 충돌은 동일 파일의 동일 부분을 다르게 수정할 때 발생해요
  • ✔️ 수동으로 충돌 구간을 해결하고 add + commit 하면 끝!
  • ✔️ 충돌은 두렵지 않아요. 피드백이 아닌 자연스러운 협업 과정입니다 😊

실수 없이 깔끔하게만 쓰는 Git도 멋지지만, 충돌을 잘 해결할 수 있는 Git 유저가 진짜 실력자입니다 💪


📎 다음 회차 예고

16회차. GitHub Actions로 자동화 시작하기

✔️ PR 시 테스트 자동 실행 ✔️ 배포 자동화 ✔️ GitHub로 DevOps 맛보기!


Comments