티스토리 뷰

Merge 종류에 대해 알아보자

왜?

회사에서 PR (Pull Request)를 권장하면서 feature브랜치에서 main브랜치로 반영할 때 어떤 방식으로 merge할 지 이야기가 나왔다.

그때 merge의 3가지 종류에 대해 듣게 됐는데, 대충은 알고있지만 조금 더 볼 겸 간단하게 정리해봤다.

Merge

일반 merge이다.

merge 커밋을 만들고 feature 브랜치에서 커밋한 내역을 다른 가지로 남겨둔다.

트리의 모양은

아래와 같다.

파란색이 main브랜치이고, 빨간색이 feature/#1-기능1 노란색이 feature/#2-기능2 이런식으로 트리가 구성된다.

main브랜치에는 merge커밋만 생긴다.

장점

어디서부터 feature브랜치가 시작됐는지, 구현하면서 어떤 커밋을 했는지 정확하게 알 수 있다.

단점

프로젝트 규모가 커지고 feature브랜치가 많아지면 트리가 복잡해져서 알아보기 힘들어진다.

Rebase merge

merge할 브랜치의 커밋 내역을 그대로 옮긴다.

merge커밋이 없고 feature브랜치에서 만든 커밋들을 main브랜치 위로 이동시킨다.

트리 모양은 아래와 같다.

하나의 가지로 트리가 만들어진다.

장점

Git history를 깔끔하게 관리할 수 있다.

단점

여러개의 커밋을 Rebase merge하다가 충돌이 일어나면 모든 커밋에서 충돌이 일어난다.

Squash merge

Squash 옵션을 적용한 Rebase merge이다.

맨 아래 커밋이 main브랜치이고 위의 Rebase merge 상황에서 Squash merge를 했다면 트리구조는 아래와 같다.

Rebase merge와 같이 하나의 가지로 트리가 완성된다.

차이점은 여러개의 커밋들이 하나로 합쳐진다음 merge된다.

장점

Git history를 깔끔하게 관리할 수 있고, 의미있는 커밋들만 남겨놓을 수 있다.

단점

커밋에 메세지를 잘 적어놓는다고해도 단계별 history 관리가 어려울 수 있다.

🤔

장단점은 지극히 개인적인 생각이다.

직접 사용해보고 느낀점을 적은 것이라 틀린 내용이 있을 수 있다.

결론은 방법마다 장점과 단점이 있으니 상황에 맞춰서 사용하면 될 것 같다.

제가 틀렸거나 다른 의견이 있으시다면 댓글로 남겨주시면 감사하겠습니다 :)

Merge 종류(merge, rebase merge, squash merge)

Merge 종류에 대해 알아보자

왜?

회사에서 PR (Pull Request)를 권장하면서 feature브랜치에서 main브랜치로 반영할 때 어떤 방식으로 merge할 지 이야기가 나왔다.

그때 merge의 3가지 종류에 대해 듣게 됐는데, 대충은 알고있지만 조금 더 볼 겸 간단하게 정리해봤다.

Merge

일반 merge이다.

merge 커밋을 만들고 feature 브랜치에서 커밋한 내역을 다른 가지로 남겨둔다.

트리의 모양은 아래와 같다.

파란색이 main브랜치이고, 빨간색이 feature/#1-기능1 노란색이 feature/#2-기능2 이런식으로 트리가 구성된다.

main브랜치에는 merge커밋만 생긴다.

장점

어디서부터 feature브랜치가 시작됐는지, 구현하면서 어떤 커밋을 했는지 정확하게 알 수 있다.

단점

프로젝트 규모가 커지고 feature브랜치가 많아지면 트리가 복잡해져서 알아보기 힘들어진다.

Rebase merge

merge할 브랜치의 커밋 내역을 그대로 옮긴다.

merge커밋이 없고 feature브랜치에서 만든 커밋들을 main브랜치 위로 이동시킨다.

트리 모양은 아래와 같다.

하나의 가지로 트리가 만들어진다.

장점

Git history를 깔끔하게 관리할 수 있다.

단점

여러개의 커밋을 Rebase merge하다가 충돌이 일어나면 모든 커밋에서 충돌이 일어난다.

Squash merge

Squash 옵션을 적용한 Rebase merge이다.

맨 아래 커밋이 main브랜치이고 위의 Rebase merge 상황에서 Squash merge를 했다면 트리구조는 아래와 같다.

Rebase merge와 같이 하나의 가지로 트리가 완성된다.

차이점은 여러개의 커밋들이 하나로 합쳐진다음 merge된다.

장점

Git history를 깔끔하게 관리할 수 있고, 의미있는 커밋들만 남겨놓을 수 있다.

단점

커밋에 메세지를 잘 적어놓는다고해도 단계별 history 관리가 어려울 수 있다.

🤔

장단점은 지극히 개인적인 생각이다.

직접 사용해보고 느낀점을 적은 것이라 틀린 내용이 있을 수 있다.

결론은 방법마다 장점과 단점이 있으니 상황에 맞춰서 사용하면 될 것 같다.

 

 

제가 틀렸거나 다른 의견이 있으시다면 댓글로 남겨주시면 감사하겠습니다 :)

'iOS > Study' 카테고리의 다른 글

프로그래밍 패러다임 (OOP, POP)  (0) 2023.01.07
[Git] Git flow vs Github flow  (0) 2022.04.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/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
글 보관함