Git에서 병합(Merge)을 수행할 때 여러 파일에서 충돌(Conflict)이 발생하는 경우에 대해 알아보겠습니다.
파일 하나에서 충돌이 발생하는 방법은 이미 익숙하실 테니, 이번 포스트에서는 여러 파일에서 충돌이 발생했을 때 어떻게 처리하는지 쉽게 설명해 드리겠습니다.
1. 여러 파일에서 충돌 발생 상황
개발 실무에서는 종종 여러 파일을 동시에 수정하고 병합하는 경우가 많습니다.
이때 병합 작업 도중 충돌이 발생할 수 있으며, 이 충돌이 여러 파일에 걸쳐 발생할 수 있습니다.
충돌 해결 방법은 파일 하나에서의 충돌 해결 방법과 동일하지만, 좀 더 체계적인 접근이 필요합니다.
예시 프로젝트
아래와 같은 프로젝트 구조를 가정해 보겠습니다.
- price: 상품 가격 정보를 담는 파일
- after_service: 서비스 후 관리 정보를 담는 파일
- size: 상품 사이즈 정보를 담는 파일
현재 master 브랜치와 premium 브랜치의 히스토리가 동일합니다.
이제 각 브랜치에서 파일을 수정하고 커밋한 후, master 브랜치에서 premium 브랜치를 병합해 보겠습니다.
이 과정에서 다음과 같은 결과를 얻을 수 있습니다.
이제 각 파일에서의 충돌을 하나씩 해결해 보겠습니다.
2. 충돌 발생 파일 확인하기
충돌이 발생하면 Git은 충돌이 있는 파일을 표시합니다.
git status 명령어를 사용하여 충돌이 발생한 파일의 목록을 확인할 수 있습니다.
충돌 발생 파일은 unmerged paths 섹션 아래에 나열됩니다.
3. 충돌 해결하기
각 파일에서의 충돌 해결 방법은 다음과 같습니다.
1. 충돌 내용 확인
충돌이 발생한 파일을 열어보면, 충돌이 표시된 부분은 다음과 같습니다.
<<<<<<< HEAD
master 브랜치에서의 변경 내용
=======
premium 브랜치에서의 변경 내용
>>>>>>> premium
여기서 HEAD는 현재 브랜치(예: master 브랜치)에서의 변경 내용, premium은 병합하려는 브랜치의 변경 내용입니다.
2. 파일 하나씩 충돌 해결하기
충돌이 발생한 파일들을 하나씩 열어 수정합니다. 예를 들어, price 파일에서 충돌을 해결한다고 가정해 보겠습니다.
- 충돌 부분을 삭제하거나 원하는 방식으로 수정합니다.
- 수정이 완료되면, 파일을 저장합니다.
수정 예시
Price : 100$
커맨드 실행
git add price
price 파일의 충돌이 해결되었음을 Git에게 알리고, staging area에 추가합니다.
3. 모든 파일에서 충돌 해결 후 커밋하기
나머지 파일(after_service, size)에서도 동일한 방식으로 충돌을 해결합니다.
충돌이 해결된 모든 파일을 staging area에 추가하고 커밋합니다.
git add .
git commit
이 명령어는 모든 변경 사항을 커밋하며, 병합 작업을 완료합니다.
4. 병합 취소하기
만약 충돌 해결이 너무 복잡하거나 충돌 파일이 너무 많아서 병합을 취소하고 싶다면, 다음 명령어를 사용해 병합을 취소할 수 있습니다.
git merge --abort
--abort는 병합을 시도하기 전 상태로 되돌립니다.
이 명령어를 실행하면 충돌 표시가 사라지고 병합 전 상태로 복구됩니다.
여러 파일에서 충돌이 발생한 경우에도, 해결 방법은 기본적으로 파일 하나에서 충돌이 발생했을 때와 같습니다.
각 파일의 충돌을 하나씩 해결하거나, 모든 파일에서 충돌을 해결한 후 한 번에 staging area에 올리고 커밋하면 됩니다.
다음 영상에서는 Git의 브랜치 삭제와 관리 방법에 대해 다뤄보겠습니다.
여러분의 Git 사용 능력을 더욱 향상시키는 데 도움이 되길 바랍니다.
공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Program Development Tips > Git' 카테고리의 다른 글
[Git] Reset과 Git Checkout: 차이점과 사용법 총정리 (0) | 2024.08.27 |
---|---|
[Git] 브랜치와 origin의 의미: 브랜치와 리모트 저장소의 관계 (0) | 2024.08.27 |
[Git] Merge(병합)방법과 Conflict 해결 방법: 초보자를 위한 쉬운 가이드 (0) | 2024.08.25 |
[Git] 브랜치란? 초보자도 쉽게 이해하는 Git branch 개념 (0) | 2024.08.25 |
[Git] 커밋 다루기 정리 노트: 실전 가이드 (0) | 2024.08.24 |