HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 3기 교육생
/
🐸
나영팀
/
git sqush vs rebase

git sqush vs rebase

Created
Feb 15, 2023 04:08 PM
Tags

git squash란

정확히 git squash라는 명령어를 없지만, merge할 때, 여러 커밋을 하나로 합치거나 interactive rebase를 할 때, squash라는 명령어가 쓰인다.
squash를 사용하게 되면 여러 개의 커밋을 하나로 합쳐주기 때문에 commit history를 깔끔하게 만들 수 있다.
$ git merge --squash my-feature $ git commit -m "your-commit-message"
이 때의 깃트리는 두 갈래로 뻗어나갔다가 다시 하나로 합쳐지는 모양을 하게 된다.
notion image

git rebase란

git rebase는 각 커밋이 하나의 부모를 가지게 한다. 즉, 그냥 rebase만 하게 되면 모든 commit들은 합쳐지지 않고, 지정한 브랜치에 추가된다. (git log —graph로 깃 트리 확인할 수 있다)
$ git checkout my-feature $ git rebase develop $ git checkout develop $ git merge my-feature
notion image
여기서 i 옵션을 통해 HEAD에서부터 몇개의 커밋을 rebase할 건지 지정할 수 있게 된다.
git rebase -i HEAD~3 //총 3개의 커밋을 합치겠다.
그러면 3개의 커밋메세지와 함께 squash를 적용할 수 있게 된다.
pick 7c65355 Task 1/3 squash 2639543 Task 2/3 squash d442427 Task 3/3
git rebase의 경우, 공통 조상이 되는 브랜치로 이동해서 diff를 copy하게 됨으로 되도록이면 push하기 전, 자신의 브랜치에서 사용하는 것이 좋다

둘의 차이점은?

  • squash는 말 그대로 여러 개의 커밋을 하나로 합쳐주는 기능
  • rebase는 커밋 부모를 하나로 맞춰주기 대문에 마치 하나의 브랜치에서 작업한 것처럼 히스토리를 관리할 수 있게 한다.
    • rebase에서 squash를 사용하게 되면 커밋이 하나로 합쳐지는 것
    • rebase에서는 개수를 지정할 수 있다.
notion image
squash와 rebase를 적절히 사용하면 위와 같은 트리를 만들 수 있다고 한다.