본문 바로가기
Program Development Tips/Git

[Git] Merge와 Conflict 해결: 여러 파일에서 충돌이 발생할 때의 해결 방법

by Maccrey Coding 2024. 8. 25.
728x90
반응형

 

 

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.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

728x90
반응형