본문 바로가기
개발 이론/개발메모

Git merge 전략

by dal_been 2024. 5. 17.
728x90

맡아진 업무를 하고 merge할때... 항상 merge에 대한 두려움에 팀장님께 물어보고.. 한다...

매번 그럴수는 없으니 회사에서 사용하는?? Git과 관련된 것들을 정리해볼까 한다.

 


Git merge

 

나에게 깃이란 그냥 코드를 올린다 정도여서 

Create Merge Commit / Squash and Merge / Rebase and Merge의 차이를 잘 몰랐다.

 

1. merge - fast forward

예를 들어 main 브랜치에 develop 브랜치가 있다고 가정하자.

이때 main 브랜치에는 새로운 커밋이 아예 없다. 그렇다면 develop브랜치가 최신 브랜치라고 할 수 있다.

이때 main 브랜치에 그대로 develop브랜치의 이력을 가져오는 것이다

(즉 main은 아무 커밋도 없어야한다.)

 

 

2. merge - recursive

main브랜치에서 develop브랜치가 분기되었다고 하자.

근데 위와 다르게 main브랜치에도 새로운 커밋이 생겼고 develop브랜치에도 새로운 커밋이 생겼다.

이때 main 브랜치에 develop브랜치 내용도 함께 추가하는 것이다.

 

 

 

3. Squash Merge

여러개의 커밋을 하나의 커밋을 합치는 것이다.

즉 develop브랜치에 d,f,c라는 커밋내용이 있다면 main브랜치에 합칠떄는 d,f,c를 h라는 하나의 커밋으로 만들어서 main에 merge 된다.

(즉 여러 커밋 이력이 하나의커밋으로 합쳐지니 이력이 없어질 수 있다는 점을 주의해야한다)

 

 

4. Rebase Merge

develop브랜치에 d,f,c라는 커밋내용을 그대로 main 브랜치에 합치는 것이다.

Squash처럼 커밋내역들을 하나로 합치는 것이 아니라 커밋내용들 모두를 main에 합친다고 생각하면 된다.

 


어떤 merge전략을 사용하는지는 회사에 따라 다르다. 회사에 따라 merge전략을 사용하면 될것같다.

다음 git에 대한 내용은 코드 작성중 이미 develop에 commit된 내역을 어떻게 가져오나? 에 대해서 작성할 예정이다.!

 

 

https://hudi.blog/git-merge-squash-rebase/#Squash--Merge