Git 충돌 해결 가이드 | 같은 파일의 같은 부분을 수정했을 때 병합하는 방법
Git 충돌 해결 가이드 🚀
: 같은 파일의 같은 부분을 수정했을 때 병합하는 방법
"같은 파일의 같은 부분을 서로 다른 브랜치에서 수정하면 어떻게 될까요?
Git은 이런 경우 자동 병합을 수행할 수 없고, 수동으로 충돌을 해결해야 합니다.
이번 가이드에서는 Git 충돌 발생 원인과 해결 방법을 예제와 함께 설명하겠습니다! 🎯"
안녕하세요, 여러분! 😊
Git을 사용하다 보면 동일한 파일의 같은 부분을 서로 다른 브랜치에서 수정하는 경우가 종종 발생합니다.
이럴 때 Git은 충돌(Conflict)을 발생시키며, 수동으로 해결하도록 요청합니다.
❓ "Git 충돌은 왜 발생할까?"
❓ "충돌을 해결하는 가장 쉬운 방법은?"
❓ "팀 프로젝트에서 충돌을 최소화하는 방법은?"
이 글에서는 Git 충돌의 개념과 해결 방법을 실전 예제와 함께 쉽게 설명하겠습니다.
이제 Git 충돌을 이해하고, 손쉽게 해결해 봅시다! 🚀
1. Git 충돌(Conflict)이란? ⚠️
Git에서 충돌(Conflict)은 두 개의 서로 다른 브랜치에서 동일한 파일의 같은 부분을 수정했을 때 발생합니다.
Git은 어느 변경 사항을 유지해야 할지 결정할 수 없으므로 사용자가 직접 선택해야 합니다.
🚨 충돌이 발생하는 주요 원인
- 같은 파일의 같은 줄을 다른 브랜치에서 수정한 경우
- 한 브랜치에서 파일을 수정했지만, 다른 브랜치에서 삭제한 경우
- 한 브랜치에서 코드 구조를 변경했지만, 다른 브랜치에서 동일한 부분을 수정한 경우
이제 실제 예제를 통해 충돌을 발생시키고 해결하는 방법을 알아보겠습니다! 🚀
2. 같은 파일의 같은 부분 수정 후 충돌 발생 ⚔️
이제 실전 예제를 통해 같은 파일의 같은 부분을 서로 다른 브랜치에서 수정하여 충돌을 발생시켜 보겠습니다.
이후 Git이 충돌을 어떻게 처리하는지 확인한 후, 직접 해결하는 방법을 배워보겠습니다.
예제 파일: conflict.txt
수정
# 메인 브랜치에서 새 파일 생성
$ echo "이것은 Git 충돌 테스트 파일입니다." > conflict.txt
$ git add conflict.txt
$ git commit -m "초기 파일 추가"
각 브랜치에서 같은 부분 수정하기
✔️ feature-branch1 브랜치에서 파일 수정
✔️ feature-branch2 브랜치에서 같은 부분 수정
# feature-branch1에서 수정
$ git checkout -b feature-branch1
$ echo "🚀 이 파일은 feature-branch1에서 수정되었습니다." > conflict.txt
$ git add conflict.txt
$ git commit -m "feature-branch1에서 파일 수정"
# feature-branch2에서 같은 파일의 같은 줄 수정
$ git checkout main
$ git checkout -b feature-branch2
$ echo "🔥 이 파일은 feature-branch2에서 수정되었습니다." > conflict.txt
$ git add conflict.txt
$ git commit -m "feature-branch2에서 파일 수정"
충돌 발생시키기
# main 브랜치로 이동
$ git checkout main
# feature-branch1 병합 (정상 병합)
$ git merge feature-branch1
# feature-branch2 병합 (충돌 발생)
$ git merge feature-branch2
위 명령어를 실행하면 Git이 충돌을 감지하고 다음과 같은 메시지를 출력합니다.
CONFLICT (content): Merge conflict in conflict.txt
Automatic merge failed; fix conflicts and then commit the result.
이제 Git은 어떤 변경 사항을 유지할지 결정할 수 없으므로 사용자가 직접 해결해야 합니다!
다음 섹션에서 충돌을 해결하는 방법을 알아보겠습니다. 🚀
3. 충돌 해결하기 (수동 병합) 🛠️
Git이 충돌을 감지하면, 해당 파일을 열어 직접 수정해야 합니다.
이제 conflict.txt
파일을 열어 Git이 충돌을 표시하는 형식을 확인해 보겠습니다.
🔍 충돌이 발생한 파일 확인
# 충돌 발생 파일 확인
$ git status
명령어를 실행하면 다음과 같은 메시지가 출력됩니다.
both modified: conflict.txt
🔍 충돌 파일의 내용 확인
이제 텍스트 편집기 또는 터미널을 사용해 conflict.txt
파일을 열어보면, Git이 충돌을 다음과 같이 표시합니다.
<<<<<<< HEAD
🚀 이 파일은 feature-branch1에서 수정되었습니다.
=======
🔥 이 파일은 feature-branch2에서 수정되었습니다.
>>>>>>> feature-branch2
🛠️ 충돌 해결 (수동 수정)
위 파일에서 어떤 내용을 유지할지 직접 수정합니다.
예를 들어, 다음과 같이 두 내용을 모두 반영할 수도 있고, 하나만 유지할 수도 있습니다.
🚀 이 파일은 feature-branch1에서 수정되었습니다.
🔥 이 파일은 feature-branch2에서 수정되었습니다.
📌 충돌 해결 후 커밋하기
# 변경 사항 저장
$ git add conflict.txt
# 충돌 해결 커밋
$ git commit -m "Resolve merge conflict in conflict.txt"
이제 충돌이 해결되었습니다! 🎉
Git은 자동 병합이 불가능한 경우 사용자가 직접 수정할 수 있도록 유도합니다.
다음 섹션에서는 Git 충돌을 예방하는 방법을 알아보겠습니다! 🚀
4. Git 충돌을 예방하는 방법 🛡️
Git 충돌은 올바른 작업 방식과 협업 프로세스를 따르면 사전에 예방할 수 있습니다.
다음과 같은 방법을 활용하면 충돌을 줄이고 원활한 협업이 가능합니다.
⚠️ Git 충돌을 방지하는 4가지 방법
- 작업 전 항상 최신 코드를 가져오기 (
git pull origin main
) - 작업 단위를 작게 나누어 병합 주기를 짧게 유지하기
- 팀원 간 협업 시, 동일한 파일을 동시에 수정하지 않도록 조율하기
- 충돌이 발생하면 즉시 해결하고, 장기간 미루지 않기
🔚 마무리: Git 충돌 해결 완벽 정리 🚀
이제 Git 충돌이 언제, 왜 발생하는지 그리고 어떻게 해결하는지 확실히 이해하셨나요?
Git을 잘 활용하면 팀원 간의 협업을 더욱 원활하게 진행할 수 있습니다! 🎯
✔️ git status
– 충돌 발생 여부 확인
✔️ git diff
– 변경 사항 비교
✔️ git merge
– 브랜치 병합
✔️ git add
+ git commit
– 충돌 해결 후 저장
✔️ git pull origin main
– 최신 코드 유지
🚀 Git 충돌을 최소화하는 실전 팁
- 병합 전에 항상
git status
와git log
를 확인하여 충돌 가능성을 체크하세요. - 충돌 발생 시, 빠르게 해결하고 적절한 커밋 메시지를 남기세요.