[Git 완전정복] branch를 합치는 방법 merge, rebase

Yellowtoast·2023년 2월 15일
0

Git 완전정복

목록 보기
1/3
post-thumbnail

서로 다른 브랜치를 합치는 두 방식

1. merge

merge : 두 브랜치를 한 커밋에 이어붙입니다.

브랜치 사용내역을 남길 필요가 있을 때 적합한 방식입니다.

아래의 사진은, 파란색 브랜치(main)초록색 브랜치(branchA)를 merge 하였습니다. 아래 상태는 아래의 코드를 수행한 결과입니다.

git merge branchA

1. 합치고 싶은 브랜치 (다른 브랜치에서 정보를 가져오고 싶은 브랜치) 로 이동합니다.

위의 사진에서는 main 브랜치 (파란색) 로 이동합니다.

git switch main  

2. 대상 브랜치(정보를 가져오고 싶은 branch)를 뒤에 적습니다.

git merge branchA

이 경우, branchA에서 새로운 정보가 추가되었다면, main에 없던 새로운 정보들이 추가되겠죠?

main 코드 줄과 겹치지 않게 코드가 작성되었다면 충돌이 발생하지 않겠지만, branchA의 새로운 코드 줄과 main 코드 줄이 겹치게 된다면 충돌이 발생하게 될 거에요.

2. rebase

rebase : 브랜치를 다른 브랜치에 이어붙입니다.

이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋습니다.

rebase는 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합합니다.
merge는 모든 브랜치가 남아있지만, rebase는 말그대로 짐을 싸서 기지를 옮기는 것이기 때문에, 해당 브랜치의 작업이 rebase된 브랜치에 붙게 됩니다.

Rebase는 말그대로 base를 옮기는 작업이기 때문에, 작업을 들고 옮길 곳으로 먼저 이동해야 합니다.(merge와는 작업 위치가 다르죠?)

아래 사진은, 보라색 브랜치(branchB)의 작업이 그대로 파란색 브랜치(main)에 옮겨진, 즉 rebase 된 상태입니다.

merge새로운 작업들을 받아올 브랜치에서 수행하지만, rebase는 말그대로 작업의 기지를 옮기는 명령이기 때문에, 짐을 싸서 옮겨 올 브랜치에서 수행해야 합니다.

1. 새로운 작업이 있는 보라색 브랜치(branchB)로 먼저 이동합니다.

git switch branchB

2. 그리고 해당 브랜치에 있는 작업을 들고 main으로 base를 옮겨야겠죠?

"branchB 너! 새로운 짐 들고 main으로 이사해서 들어가!" 라는 뜻이에요.

git rebase main 

하지만 rebase만 했다고 끝난 것이 아닙니다. branchB가 짐을 싸들고 main으로 가기는 했지만, main은 이 사실을 모르고 있습니다. main에게 branchB의 짐을 전달하고 이삿짐을 풀어서 살림을 합칠 수 있도록 해야겠죠.

3. 짐을 받아줄 main 브랜치로 이동합니다.

git switch main 

4. branchB의 새로운 살림들을 받아서 합칩니다.

git merge main 

merge, rebase는 실무에서 협업할 때 정말 많이 쓰이는 기능인만큼 꼭 알아둘 필요가 있습니다. 개념을 명확하게 모르고 썼다간 협업할 때 엄청난 문제가 발생할 수도 있으니까요.

다음 번에는 충돌이 왜 발생하는지, 발생한 충돌을 어떻게 해결하는지에 관해 포스팅 해보겠습니다.

profile
Flutter App Developer

0개의 댓글