mingg IT

[Git] Git squash로 여러 커밋 한번에 묶기 본문

git

[Git] Git squash로 여러 커밋 한번에 묶기

mingg123 2023. 4. 21. 11:18

개발하다보면 한 기능을 위한 커밋을 여러번 하게 되는 경우가 빈번하다. 

테스트를 위해서라던가, 브랜치를 이동하면서 stash 하기엔 애매하다던가... 다른 사람과 협업을 한다던가 

 

여튼 오늘은 그런 여러개의 커밋을 하나의 커밋으로 보기위한 git squash하는 법에 대해 알아보겠다.

 

git log를 확인한다.

git log --pretty=oneline

 

하나로 묶고 싶은 커밋들을 설정한다. 

난 최근부터 9개까지를 하나로 묶으려고 한다. 

$ git rebase -i HEAD~9

 

이런식으로 나올텐데 가장위의 pick를 제외하고 squash로 바꾸어준다. 

 

 

이후 ESC + 저장(:wq) 을 한다.

커밋 메세지를 바꿀 수도 있다.

9번째 커밋 메세지를 feat -> add sentry upload yml 로 바꾸어 보았다. 

 

 

이후 ESC + 저장(:wq) 을 한다.

 

로그를 확인해본다.

git log

git log를 통해 확인하면 9개의 커밋이 하나로 합쳐진 것을 확인할 수 있다. 

 

 

squash 반영하기. 

git push -f origin HEAD

이제 이 여러개 합친 커밋을 반영해줘야 한다. 

 

 

git push -f 브랜치명 으로 강제로 push 해줘야 한다. 되도록이면 push를 하지 않은 commit위주로 사용하는게 좋을 듯 함. 

 

 

GIT 에서 확인하기

git commit 내역에 들어가보면 하나의 커밋으로 합쳐진 것을 확인할 수 있다.

Comments