티스토리 뷰

Tools/Git

[Git/GitHub] Squash and merge

SdardewValley 2022. 8. 13. 22:00
반응형

Squash merge란?

Merge pull request의 옵션

  GitHub에서 PR을 merge할 때 [Create a merge commit], [Squash and merge], [Rebase and merge]의 3가지 옵션이 있다. create a merge commit은 단순하게 git merge 브랜치명만을 사용하는 방법이다. 해당 방법은 Fast-Forward & 3-way 병합 글을 보면 어떤 방식으로 병합이 되는지 알 수 있다. Rebase and merge는 rebase 글을 보면 된다.

  이 글에서는 Sqash and merge에 대해서 다룰 것이다. squash merge는 git 히스토리를 요약해서 병합하는 방법이다. 분기 이후에 발생한 브랜치의 모든 commit들을 하나의 새 커밋으로 요약한다.

 

merge 전
merge 전
sqush merge 후

  위에는 git log로 그래프를 출력한 모습이다. feature을 master에 squash merge 하면 하나의 merge commit이 생성되는 것을 확인할 수 있다.

git log master

  squash merge후 merge가 발생한 브랜치에서 git log로 로그를 출력하면 feature의 모든 commit이 아닌 단 하나의 commit만이 반영된 것을 확인할 수 있다.

 

 

Squash merge의 장점

  Squash merge는 브랜치 분기를 알 수 있고 워크 플로를 변경하지 않는다. 이 브랜치 분기를 통해서 작업 시작과 작업이 끝난 시점을 알 수 있다.

  브랜치 분기를 하고 작업을 할 때 보통 여러 commit들이 생성된다. 이 작업 commit들을 하나의 commit으로 가져가기 때문에 해당 작업을 되돌리기 위해 revert나 reset 사용할 때 도움이 된다.

 

 

Squash merge를 할 때 유의할 점

  squash merge를 하면 여러 commit이 있더라도 단 하나의 merge commit만이 생성된다. 이렇게 작업 내용이 압축되므로 협업을 할 때에는 commit 내용이 유지가 필요한 시점과 아닌 시점을 고려해서 사용하는 것이 중요하다.

 

 

참고

  • https://docs.microsoft.com/en-us/azure/devops/repos/git/merging-with-squash?view=azure-devops
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함