신입 개발자, 더이상 충돌(conflict)에 깃(Git)죽지 말자

예비/신입 개발자, 더 이상 충돌(conflict)에 깃(Git)죽지 말자. merge에서 충돌이 발생해도 당황하지 않도록 충돌 해결 방법에 대해 자세히 알아보세요.
이예은's avatar
Apr 05, 2024
신입 개발자, 더이상 충돌(conflict)에 깃(Git)죽지 말자

1. Merge(병합)란?

merge는 Git에서 두 개의 branch를 하나로 통합하는 과정입니다.
merge의 기본 단위는 브랜치이고, 브랜치간의 병합을 가능하게 해줍니다. merge를 통해 코드의 다양한 버전을 효과적으로 관리할 수 있습니다. merge는 특히 협업 환경에서 중요한 역할을 하며, 프로젝트의 다양한 기능 개발이나 버그 수정 작업을 병렬로 진행한 후, 이를 메인 프로젝트 코드와 합칠 때 주로 사용됩니다.
 

2. merge하기

1. 메인 branch로 이동하기

작업한 branch의 변경 사항을 메인 프로젝트 코드와 합치려면, 먼저 메인 branch(예: master 또는 main)으로 전환해야 합니다.
git checkout <main/master>
 

2. 작업한 Branch Merge하기

git merge <branch-name> // merge하려는 브랜치 이름
 

3. merge의 방법 (Fast-Forward Merge vs. Three-Way Merge)

Git에서는 두 가지 유형의 merge가 존재해요. 바로 Fast-Forward merge와 Three-Way merge입니다.
  • Fast-Forward Merge: 메인 branch에 추가적인 커밋이 없고, merge하려는 branch가 메인 branch에서 분기된 이후의 커밋만 포함하는 경우에 발생합니다. Git은 단순히 메인 branch의 포인터를 최신 커밋으로 이동시킵니다.
  • Three-Way Merge: 두 branch 모두에서 새로운 커밋이 생성된 경우, Git은 각 branch의 마지막 커밋과 공통 조상 커밋을 사용해 merge 커밋을 만듭니다. 이 커밋은 두 branch의 변경 사항을 합친 결과를 포함합니다.
 

4. merge 작업 확인하기

Checkout한 브랜치를 기준으로 —merged—no-merged 옵션을 사용하여 merge가 된 브랜치인지 아닌지 필터링할 수 있습니다.
git branch --merged git branch --no-merged
 

5. merge 후 브랜치 삭제

merge가 완료되었다면 사용하지 않는 브랜치를 삭제해줍니다.
git branch -d <branch 이름>
 
 

6. 공포의 충돌(Conflicts) 해결하기

충돌은 두 branch에서 같은 코드 라인을 다르게 수정했을 때 주로 일어납니다.
merge 충돌을 해결하는 것은 어려운 것이 아닙니다. 마음을 차분히 가지고 수정사항을 확실히 파악한다면 대부분의 문제를 어렵지 않게 해결할 수 있습니다.
 

1. 충돌난 부분을 확인하고 직접 수동으로 수정하기

1-1. 충돌 확인하기

충돌이 발생하면 Git은 충돌이 발생한 파일을 명시하며, 파일 내부에서는 충돌 부분을 <<<<<<<, =======, >>>>>>>로 표시합니다.
 

1-2. 수동으로 충돌 해결하기

텍스트 편집기를 사용해 해당 파일을 열고, 충돌을 해결합니다. 충돌이 발생한 부분을 적절하게 수정한 후, <<<<<<<, =======, >>>>>>> 마크를 제거합니다.
 

1-3. 충돌 해결 후 커밋하기

충돌을 해결한 후에는 변경 사항을 스테이지에 추가하고 커밋합니다.
git add . git commit -m "Resolve merge conflict"
 
 

2. merge 이전 상태로 돌아오기

merge 강제로 취소하는 명령어를 사용해 merge 이전 상태로 돌아올 수 있습니다.
git merge —abort
 
 
머지를 할 때 conflict를 해결하는 것은 Git 사용법에서 핵심 중의 핵심입니다. 충돌이 발생해도 이를 해결하는 과정을 통해 merge 사용법을 완전히 익힐 수 있습니다. 포스팅에 적힌 해결 방법으로 충돌에 깃(Git)죽지 말고 차분하게 해결해보세요!
 
 
🔽 아래에서 뉴스레터를 구독하고, IT커리어 팁을 쉽게 받아 보세요!
Share article
스프린트 레터를 구독하고
IT 커리어 팁과 최신 트렌드를 받아보세요!
RSSPowered by inblog