2.5 Conflict 해결
약 6분
읽기 설정
글자 크기
줄 간격
글꼴
2.5 Conflict 해결
버전 관리를 사용하다 보면, 여러 사용자가 같은 파일이나 코드의 동일한 부분을 수정할 때 충돌(conflict)이 발생할 수 있습니다. 충돌은 Git이 두 가지 변경 사항을 동시에 허용할 수 없을 때 발생하며, 이를 해결하는 과정이 필요한데, 이 과정이 바로 "Conflict 해결"입니다. 충돌을 해결하는 방법을 배우면 원활한 협업이 가능하며, 프로젝트 전반의 품질을 보장할 수 있습니다.
충돌 해결 과정은 세 단계로 나뉩니다: 1) 충돌 원인 이해, 2) 충돌 수정, 3) 수정된 사항 커밋(commit)하기입니다. 단순히 충돌을 처리하기보다는 각 본인의 수정사항이 어떻게 project에 기여하는지를 파악하는 것이 중요합니다.
예제
예를 들어, 프로젝트에 대한 두 개발자 Alice와 Bob이 있다고 가정해봅시다. 같은 파일의 같은 줄을 수정한 후에 병합(merge) 작업을 시도할 경우 충돌이 발생하게 됩니다. 이를 통해 충돌 해결 프로세스를 살펴보겠습니다.
먼저 Alice가 index.html의 제목을 "Welcome to My Website"로 수정하고 커밋합니다.
git add index.html
git commit -m "Update title in index.html"
이후 Bob은 같은 index.html 파일의 제목을 "Welcome to My Awesome Website"로 수정하고 커밋합니다.
git add index.html
git commit -m "Change title in index.html"
다음으로 Bob이 자신의 변경 사항을 병합하려고 할 때 충돌이 발생합니다.
충돌 발생
Bob은 자신의 브랜치에서 Alice의 변경 사항을 병합하기 위해 명령어를 입력합니다.
git merge AliceBranch
이때, Git은 다음과 같은 오류 메시지를 출력하며 충돌을 알립니다:
CONFLICT (content): Merge conflict in index.html.
충돌 수정
이제 충돌을 해결하기 위해 index.html 파일을 엽니다. 충돌이 발생한 부분에서 Git은 두 버전의 변경 사항을 구분하는 표시를 추가합니다. 예를 들어, 다음과 같이 나타납니다:
<h1>Welcome to My Website</h1> <!-- Alice's version -->
<h1>Welcome to My Awesome Website</h1> <!-- Bob's version -->
이 부분을 수정하여 최종적으로 어떤 제목을 유지할지 결정합니다. 예를 들어, "Welcome to My Awesome Website"로 수정할 수 있습니다.
수정이 완료되면 해당 파일을 다시 스테이징(staging)하여 커밋을 진행합니다.
git add index.html
git commit -m "Resolved merge conflict in index.html"
GitHub Push 및 Pull Request
모든 변경 사항을 로컬 저장소에서 처리한 후, 원격 저장소로 변경 사항을 푸시(push)하여 팀원들과 공유합니다.
git push origin BobBranch
이후 GitHub에서 Pull Request를 생성하여 다른 팀원에게 변경 사항을 검토하도록 요청합니다.
정리
Git에서의 충돌 해결 과정은 협업에서 불가피한 상황이며, 이 과정을 이해하고 익히는 것은 프로젝트의 성공적인 진행을 위해 반드시 필요합니다. 여러 개발자가 함께 작업하는 환경에서는 이러한 충돌이 자주 발생할 수 있으므로, 이를 미리 연습해보고 능숙하게 대처할 수 있도록 준비하는 것이 중요합니다.
다양한 충돌 해결 전략과 팀원 간의 커뮤니케이션 능력은 팀워크를 증진시키고, 프로젝트의 품질을 높이는데 기여하게 됩니다.
git add index.html
git commit -m "Updated title in index.html"
git merge AliceBranch
git add index.html
git commit -m "Resolved merge conflict in index.html"
git push origin BobBranch
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.