본문 바로가기
Program Development Tips/Git

[Git] Merge(병합)방법과 Conflict 해결 방법: 초보자를 위한 쉬운 가이드

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

 

Git에서 브랜치를 병합(Merge) 할 때 발생할 수 있는 충돌(Conflict) 문제를 해결하는 방법에 대해 알아보겠습니다.

이 포스트는 Git을 처음 접하는 분들을 위해 최대한 쉽게 설명하겠습니다.

브랜치 병합과 충돌 해결을 통해 더 원활한 협업과 코드 관리를 경험해 보세요!

1. Git Merge란?

브랜치 병합(Merge)은 두 개 이상의 브랜치를 하나로 합치는 작업을 말합니다.

주로 기능 개발이 완료된 후, 개발한 기능을 메인 브랜치(예: main 또는 master)로 통합할 때 사용됩니다.

git merge [브랜치 이름]

여기서 [브랜치 이름]은 병합하고자 하는 브랜치의 이름입니다.

예시

git checkout main
git merge free-trial

위 명령어는 free-trial 브랜치의 변경 사항을 main 브랜치로 병합합니다.

2. 병합 과정에서 충돌이 발생하는 이유

병합 작업을 할 때, Git은 두 브랜치의 변경 사항을 비교하여 자동으로 통합합니다.

하지만 다음과 같은 경우에는 Git이 자동으로 병합할 수 없어 충돌(Conflict)이 발생할 수 있습니다.

  • 동일 파일의 동일 부분에서 변경: 두 브랜치에서 동일한 파일의 같은 부분을 다르게 수정한 경우.
  • 파일 삭제 및 수정: 하나의 브랜치에서는 파일을 삭제하고 다른 브랜치에서는 같은 파일을 수정한 경우.

이런 충돌은 개발자에게 수동으로 해결해 달라는 신호입니다.

3. 충돌 해결 방법

1. 충돌 발생 확인하기

병합 도중 충돌이 발생하면, Git은 충돌이 있는 파일을 표시하고 병합을 중지합니다.

충돌이 발생한 파일은 상태를 확인하면 알 수 있습니다.

git status

충돌이 발생한 파일은 unmerged paths 아래에 표시됩니다.

 

2.충돌 파일 수정하기

충돌이 발생한 파일을 열면, 다음과 같은 형식으로 충돌된 부분이 표시됩니다.

<<<<<<< HEAD
현재 브랜치의 변경 내용
=======
병합하려는 브랜치의 변경 내용
>>>>>>> free-trial

이 구역은 다음과 같은 구분이 있습니다:

  • <<<<<<< HEAD: 현재 브랜치의 변경 내용
  • =======: 두 변경 사항의 구분선
  • >>>>>>> [브랜치 이름]: 병합하려는 브랜치의 변경 내용

수동으로 수정하여 원하는 방식으로 내용을 조정한 후, 충돌 표시 부분을 제거하고 파일을 저장합니다.

 

3. 충돌 해결 완료 후 커밋하기

충돌을 해결한 후에는 변경 사항을 커밋하여 병합을 완료해야 합니다. 다음 명령어를 사용하여 커밋을 진행합니다.

git add [충돌 해결한 파일]
git commit

git commit 명령어는 충돌 해결 후 자동으로 생성된 병합 커밋 메시지를 사용합니다.

4. 병합 커밋 메시지 이해하기

병합 작업이 완료되면 Git은 자동으로 커밋 메시지를 생성합니다.

이 메시지에는 병합된 브랜치와 커밋의 요약 정보가 포함됩니다. 메시지를 검토하고 필요에 따라 수정할 수 있습니다.

5. 병합 취소하기

병합 작업 도중 충돌이 발생했을 때, 충돌을 해결하지 않고 병합 자체를 취소하는 방법도 있습니다.

이전 영상에서는 free-trial  브랜치에서 mian 브랜치를 병합하다가 충돌이 발생했고, 이를 해결하여 병합에 성공했습니다.

하지만, 때로는 충돌을 해결하기 어려울 때나 나중에 병합하고 싶을 때가 있을 수 있습니다.

병합을 취소하려면 다음 명령어를 사용합니다.

git merge --abort

--abort는 우리말로 '버리다, 취소하다'라는 뜻입니다.

병합을 취소한 후에는 충돌이 발생하기 전 상태로 돌아가게 됩니다.

아래 그림처럼 이 커맨드를 실행하면, 충돌 표시가 사라지고 브랜치가 머지를 시도하기 이전 상태로 복구됩니다.

 

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
반응형