5.2 잘못된 Merge

약 6분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

5.2 잘못된 Merge

잘못된 Merge는 개발 과정에서 자주 발생하는 실수 중 하나입니다. 주로 두 개 이상의 브랜치를 병합할 때, 예기치 않은 결과물이 생기는 경우를 말합니다. 이런 실수는 코드 충돌을 일으키거나, 이전 작업 결과를 잃게 만들 수 있기 때문에, Git 사용 시 주의해야 할 점입니다.

잘못된 Merge가 발생하는 이유는 다양하지만, 주로 다음과 같은 상황에서 발생합니다:

  1. 서로 다른 기능을 개발 중인 브랜치가 서로 충돌할 때
  2. 최신 변경 사항을 포함하지 않고 Merge할 때
  3. 팀원 간의 소통 부족으로 인해 발생하는 경우

이러한 문제를 방지하기 위해서는, Merge 전에 변경 내용을 항상 확인하고, 팀원들과의 소통을 통해 원활한 협업 환경을 만들어야 합니다.

이제 예제를 통해 잘못된 Merge 상황을 살펴보겠습니다.

예제

가정해보겠습니다. 우리는 feature-1 브랜치에서 새로운 기능을 개발하고, 동시에 다른 팀원은 feature-2 브랜치에서 다른 기능을 개발하고 있다고 가정합니다. 두 브랜치 모두 같은 파일을 수정하여 Merge할 때 충돌이 발생할 수 있습니다.

  • 원래 상태
    • feature-1 브랜치에서 index.html:
      <h1>Feature 1</h1>  
      <p>Feature 1 description.</p>  
      
    • feature-2 브랜치에서 index.html:
      <h1>Feature 2</h1>  
      <p>Feature 2 description.</p>  
      

실습

이제 두 브랜치를 병합해 보겠습니다. feature-1 브랜치에서 feature-2 브랜치를 Merge하려고 합니다.

코드 bash
git checkout feature-1
 git merge feature-2
 # 충돌 발생!

Merge를 시도했을 때 충돌이 발생하게 됩니다. 다음과 같이 메시지가 나타납니다:
Auto-merging index.html CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.

이를 해결하기 위해서는 수동으로 충돌 내용을 수정해야 합니다.

Conflict 해결

index.html 파일을 열어보면 다음과 같이 표시됩니다:

<h1>Feature 1</h1>  
<p>Feature 1 description.</p>  
<<<<<<< HEAD  
<h1>Feature 2</h1>  
<p>Feature 2 description.</p>  
=======  
</p>  
>>>>>>> feature-2  

이렇게 되어 있는 코드를 올바른 형태로 수정한 후 다시 commit합니다.

코드 bash
git add index.html
 git commit -m "Resolved merge conflict between feature-1 and feature-2"

GitHub Push 및 Pull Request

충돌을 해결한 후, 원격 저장소에 Push합니다.

git push origin feature-1  

Push가 완료되면 GitHub에서 Pull Request를 생성하여 팀원에게 검토 요청을 할 수 있습니다.

정리

잘못된 Merge는 코드 충돌이나 예상치 못한 결과를 초래할 수 있습니다. 이를 방지하기 위해선 다음과 같은 조치가 필요합니다:

  • 변경 사항은 항상 미리 확인하고, 팀 내 소통을 강화합니다.
  • Merge 전에 git pull 명령어를 사용하여 최신 상태를 반영합니다.
  • 충돌이 발생했을 경우, 수동으로 충돌을 해결한 후 commit을 합니다.
    잘못된 Merge 경험을 통해 Git을 더 효과적으로 사용할 수 있는 기회를 마련해야 합니다.

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.