Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

미국 사는 수스의 코딩

Git 브랜치 병합 : Git merge 본문

Git

Git 브랜치 병합 : Git merge

캘리 사는 수스 2023. 3. 15. 17:43
반응형

이번 포스팅에서는 git merge에 대해서 배워보도록 하겠습니다.

다음 포스팅은 git rebase에 대해서 포스팅하게 될 텐데, git merge와 git rebase의 차이점에 대해서도 배울 것입니다.

 

git merge란

  • 현재 사용하는 branch에 다른 branch의 변경 사항을 통합하는 기능이다.

git merge 용도

  • 여러 명이 같은 파일의 내용을 변경할 경우, 각자 자기만의 branch에서 작업하게 됩니다. 작업이 끝나게 되면, 여러 명이 변경한 파일들을 하나의 파일로 합쳐야 되는데, git merge로 각자의 branch들을 하나의 branch로 병합하여, 각자 고친 파일을 하나의 파일로 만들어 줄수 있습니다.
  • 여러 명이 같은 파일을 변경하지 않을 경우도, git merge를 많이 사용합니다. 예를 들어, 회사에서 코드 파일을 변경하게 되면, 보통 코드 테스트를 dev 환경(개발환경)에서 하게 되고, 그걸 prod 환경(실제 서비스 환경)으로 push하게 됩니다. 여러명의 사람들이 각자의 branch에서 각기 다른 파일을 변경하고 그걸 dev branch에 다 포함해 테스트를 해야 하기에, 그 dev branch에 모든 branch를 병합할 때도 자주 쓰입니다. (그림 예시)

git merge 충돌 (merge conflict)

  • git merge를 할 때, 서로 다른 branch가 동일한 파일의 같은 위치에서 변경했을 경우, (파일 삭제 및 이름 변경 등) 두 branch에서 수정된 내용을 자동으로 병합하지 못하고 충돌이 발생하게 됩니다.
    (Git은 어떤 변경 사항을 적용할지 자동으로 판단할 수 없기에, 개발자가 직접 충돌을 해결해야 됩니다.)

git merge 예시

  • 예시 : 2명의 개발자가 각자 dev branch를 토대로 만든 branch에서 코드를 변경하고 dev branch에서 개발자가 각자 만든 두 개의 branch를 통합하도록 하겠습니다.
  • 사용되는 branch : dev, branch_1, branch_2

DEV branch 안에 있는 두 개발자가 작업할 파일

1. 개발자1 & 2의 작업

  • 각자 자신만의 branch를 dev branch 토대로 만듭니다.
git checkout -b branch_1 origin/dev

  • 개발자1 & 2 둘 다 각자의 코드를 수정하고 각자의 branch로 push합니다.

개발자 1
개발자 2

2. branch_1과 branch_2를 dev branch에 병합

  • dev branch에서 git merge를 해야 하기에, dev branch로 현재 branch를 바꿔줍니다.
#현재 branch 바꾸는 명령어
git checkout dev
#현재 branch 확인하는 명령어
git branch

  • branch_1과 branch_2를 한꺼번에 dev branch로 병합합니다. (여러 개의 branch를 병합할 때는 충돌 가능성이 높기 때문에, 복잡한 병합을 작업할 경우, 하나씩 병합합니다)
git merge branch_1 branch_2

(그림을 보면, branch_1의 병합은 성공적이었지만, branch_2의 병합은 충돌이 일어났습니다. 이유는 같은 위치에 코드가 변경됬기 때문입니다. (ROW 3가 들어가면서, "개발자 2는 여기서부터 코드를 시작" 줄이 하나 밀려나게 되면서,  해당 위치의 코드가 변경되어 충돌 발생))

  • "Accept Both Changes"를 하거나 직접 파일을 고쳐서, git add -> commit -> push해서 병합을 완성할 수 있다.

3. git merge 병합 취소

  • git merge를 한꺼번에 하여, 충돌이 일어나 혹시 직접 고치기 전에 되돌아가고 싶을 때의 방법이다.
git merge --abort

4. branch history

  • 여러 브랜치를 git merge했을 경우, branch마다의 commit 내용이 다 기록에 남습니다.

 

반응형

'Git' 카테고리의 다른 글

Git 브랜치 병합/재배치 : Git rebase  (0) 2023.03.19
Git 커밋 취소 : Git revert 되돌리기  (0) 2023.03.15
Git Command 취소 : Git reset  (0) 2023.03.05
Git 명령어 정리 | 예시  (0) 2023.03.01
Git 용도와 구성 설명  (0) 2023.02.27
Comments