Conflict (충돌) 없이 Git Merge 하기
by 현생사는갓생지망생Git을 활용할 때 가장 어렵게 느껴졌던 개념이 Merge 였다
Git Merge에 대해 이해를 하기 위해서는 Git의 Local과 Remote(Origin)의 변경점에 대한 이해가 필요하다
Git Merge란?
Git Branch를 다른 Branch로 합치는 과정
👉🏻 Git Graph 활용
Visual Studio IDE를 사용한다면 내장되어 있는 Git 기능 사용이 가능하다
그중 변경점 (Commit) 이력을 확인하기 위한 기능이 Git Graph 이다
Extensions에서 검색하여 설치할 수 있다
👉🏻 Git Conflict
Git Merge 또는 Rebase 과정 중 동시에 같은 파일의 같은 부분을 수정하거나, 다른 사람의 변경 사항을 병합하려고 하는 경우 충돌이 발생할 수 있다
그런 경우 Auto Merge가 불가능하기 때문에 충돌을 해결 후 Merge를 해줘야 한다
충돌을 해결하고 Merge 해줘도 되지만, 다른 사람이 Commit 한 내역이 변경되어 Remote 저장소에 영향을 줄 위험성이 있다
따라서 충돌을 최소화하여 Merge 해야 한다!
❓How to❓
✏️ Scenario "dev" Branch에 "feat/ci" Branch Merge
Git 형상을 Local로 가져와서 수정을 했다고 가정하자
Local에서 feat/ci 브랜치를 수정하는 동안 혹은 다른 작업을 하는 동안 다른 팀원들도 각자 브랜치를 생성하여 dev에 Merge를 할 수도 있고, dev에 직접 Push를 할 수도 있다
이때, 바로 Local에서 수정한 feat/ci를 Remote의 dev로 Merge 하면 충돌이 발생할 가능성이 있다
왜냐? 내가 Local로 가져온 시점의 feat/ci 브랜치는 내가 수정하는 동안 Remote의 dev 브랜치에 어떠한 변경점들이 발생했는지 모른다
이를 방지하기 위해 현재 내 Local에서 아래와 같은 순서대로 작업을 해준다
git checkout dev
git pull
Remote의 dev 브랜치의 변경점들을 Local의 dev 브랜치로 가져온다. 이렇게 하면 현재 내 Local에서도 Remote의 dev 브랜치에 발생한 변경점들을 알게 된다
git checkout feat/ci
git merge dev
Local의 dev 브랜치를 feat/ci로 Merge 한다. 이러면 Local의 feat/ci도 Remote의 dev 브랜치에 발생한 변경점들을 모두 알게 된다.
이 과정들을 수행하면 위와 같이 Git Graph를 확인할 수 있다
Local에서 feat/ci를 수정하는 동안 발생한 Remote dev의 변경점을 Local로 가져오고, 해당 변경점을 Local의 feat/ci는 모르기 때문에 Local에서 Merge를 먼저 수행한다
그러면 위와 같이 Local에서 feat/ci와 dev 브랜치가 병합되고
현재 상태에서 feat/ci 브랜치에서 Commit, Push 한 내역을 Remote의 dev에 Merge 하면 된다!
👉🏻 Merge 방법
git merge <병합할 Branch>
또는 GitLab GUI에서 Merge 요청도 가능하다
위와 같이 Merge Request가 생성되면 팀원들이 확인 후 승인이 가능하다
Git을 활용하기 위해서는 변경점에 대한 이해, Local과 Remote 저장소에 대한 이해가 명확해야 한다💪🏻
✍🏻 참고
Git Merge https://velog.io/@marksen/Git-Branch%EC%99%80-Merge
'DevOps' 카테고리의 다른 글
Git Status와 Git Add, Commit, Push 기본 개념 및 사용법 (3) | 2023.12.21 |
---|---|
다른 사람의 GitLab Repository에서 Branch 복사해오기 (0) | 2023.12.15 |
MAC에 Git 설치 및 GitLab Remote 저장소 연동 (0) | 2023.12.15 |
Kubernetes 기본 개념과 기능 및 동작 구조 (1) | 2023.12.15 |
MAC에 Podman Desktop 설치 (1) | 2023.12.15 |
블로그의 정보
현생이네
현생사는갓생지망생