초보도 쉽게 이해하는 git merge 완벽 정리
git merge의 필요성
개발 프로젝트에서 팀원들과 협업하며 일하다 보면 다양한 버전의 코드를 효율적으로 관리해야 하는 상황이 자주 발생합니다. 바로 이때, git merge가 빛을 발합니다. 이 아티클에서는 git merge의 개념과 사용법을 초보자도 쉽게 이해할 수 있도록 구체적으로 설명하겠습니다. 어렵게 느껴질 수 있는 병합 과정도 한 단계씩 따라가면 어렵지 않게 익힐 수 있을 것입니다. 준비되셨나요? 시작해보겠습니다!
git merge의 단계별 이해
단계 1: Branch 이해하기
git branch feature
git checkout featurebranch: 현재 진행중인 작업을 분리하고 독립적으로 개발을 진행할 수 있게 해줍니다.checkout: 특정 브랜치로 이동합니다.
단계 2: Merge 준비하기
git checkout master
git merge feature
checkout master: 병합할 대상 브랜치로 이동합니다.merge: feature 브랜치와 master 브랜치를 병합합니다.
단계 3: 충돌 해결하기 (해당 시)
코드를 병합할 때 같은 부분을 동시에 수정한 경우 충돌이 발생할 수 있습니다. 이런 상황을 해결하지 않으면 코드는 작동하지 않을 것입니다.
git checkout master
git merge feature이 명령어가 충돌을 일으킨다면, 충돌이 발생한 파일을 열어봐야 합니다. 코드 편집기(예: Visual Studi Code)를 통하여 확인하면 더욱 쉽게 확인할 수 있습니다.
<<<<<<< HEAD
내용 A
=======
내용 B
>>>>>>> feature
이것은master 브랜치에는 "내용 A"가 있고, feature 브랜치에는 "내용 B"가 있음을 의미합니다. 이럴 경우에는 수동으로 충돌을 해결해야 합니다.
단계 4: 병합 완료하기
충돌이 해결되면, 병합을 완료합니다.
git add .
git commit -m "병합 완료"단계별로 차근차근 알아보기
git merge 플로우 차트
전체적인 플로우를 한 눈에 볼까요? 이 플로우 차트를 통해 git merge의 전체 프로세스를 한 눈에 볼 수 있습니다.
단계 별 Merge 과정
Branch 생성: 새로운 기능을 개발할 때 사용할 새 브랜치를 생성합니다.
git branch feature-name
Branch로 이동: 새로 생성한 브랜치로 이동하여 작업을 시작합니다.
git checkout feature-name
Output: Switched to branch 'feature-name'
변경 사항 커밋: 변경된 사항을 커밋하여 추적합니다. 이렇게 하면 나중에 변경 내역을 확인하거나 되돌릴 수 있습니다.
git commit -m "commit message"
Output: [feature-name abc1234] commit message
대상 브랜치로 이동: 변경사항을 병합할 대상 브랜치로 이동합니다.
git checkout master
Output: Switched to branch 'master'
Merge 수행: 새로운 브랜치의 변경사항을 현재 브랜치에 병합합니다.
git merge feature-name
Output: Updating a20abac..5f4b5e4 Fast-forward
충돌 해결: 충돌이 발생한 경우 수동으로 수정하고 병합을 완료합니다.
git add .
git commit -m "병합 완료"
Output: [master c0c4b2e] 병합 완료
병합 완료 후 정리: 불필요한 브랜치는 삭제하여 관리를 편리하게 합니다.
git branch -d feature-name
Output: Deleted branch feature-name (was 5f4b5e4).
결론
git merge는 처음에는 다소 복잡해 보일 수 있지만, 명확한 단계와 실습을 통해 쉽게 익힐 수 있습니다. 충돌 해결은 처음에는 어려울 수 있지만, 협업을 하다보면 반드시 일어나게 되어있고, 의사소통과 git 스킬을 활용해서 해결할 수 있습니다. 협업의 핵심이자 코드의 효율적 관리를 위해 git merge는 필수적인 스킬로 남을 수 있습니다 !
함께 읽으면 좋은 글

