Git Squash: 커밋 기록 깔끔하게 관리하기

jsonLee·2023년 8월 26일
1
post-thumbnail

작업 중에는 자주 커밋하고, PR 전에는 커밋을 정리하자!

작업 중에 여러 차례의 커밋을 하는 것은 개발자에게 많은 이점을 제공합니다. 어떤 변화를 주었을 때의 결과를 확인하거나, 이전 상태로 롤백하기에 훨씬 용이하죠. 그런데 이렇게 많은 커밋들이 그대로 메인 브랜치에 병합되어 불필요한 Working In Progress 와 같은 커밋들이 섞여있다면 전체 히스토리를 파악하기가 힘들어질 것입니다. 그래서 우리는 git squash를 통해 이러한 문제를 해결할 수 있습니다.

커밋은 왜 중요한가?

프로젝트를 진행하면서 다양한 변경 사항들을 가진 커밋을 만드는 것은 불가피합니다. 이렇게 다양한 커밋들은 개발을 진행하면서 중간 체크포인트를 설정하는 것과 같아서, 이전 상태로 쉽게 돌아갈 수 있는 장점이 있습니다. 하지만, 이런 중간 커밋들을 그대로 메인 브랜치에 남기는 것은 좋지 않습니다.

Git Squash란?

git squash는 여러 개의 커밋을 하나의 커밋으로 합치는 방법입니다. 이렇게 하면 여러 개의 중간 커밋들을 깔끔하게 정리하여 하나의 의미 있는 커밋으로 만들 수 있습니다.

단순히 squash 명령만으로는 작업을 수행할 수 없습니다. 보통 git rebase의 interactive 모드를 사용하여 squash 작업을 진행합니다.

Git Squash: 커밋 기록 깔끔하게 관리하기
작업 중에는 자주 커밋하고, PR 전에는 커밋을 정리하자!

작업 중에 여러 차례의 커밋을 하는 것은 개발자에게 많은 이점을 제공합니다. 어떤 변화를 주었을 때의 결과를 확인하거나, 이전 상태로 롤백하기에 훨씬 용이하죠. 그런데 이렇게 많은 커밋들이 그대로 메인 브랜치에 병합되면 커밋 히스토리가 복잡해지고 이해하기 어려워집니다. 그래서 우리는 git squash를 통해 이러한 문제를 해결할 수 있습니다.

커밋은 왜 중요한가?
프로젝트를 진행하면서 다양한 변경 사항들을 가진 커밋을 만드는 것은 불가피합니다. 이렇게 다양한 커밋들은 개발을 진행하면서 중간 체크포인트를 설정하는 것과 같아서, 이전 상태로 쉽게 돌아갈 수 있는 장점이 있습니다. 하지만, 이런 중간 커밋들을 그대로 메인 브랜치에 남기는 것은 좋지 않습니다.

Git Squash란?
git squash는 여러 개의 커밋을 하나의 커밋으로 합치는 방법입니다. 이렇게 하면 여러 개의 중간 커밋들을 깔끔하게 정리하여 하나의 의미 있는 커밋으로 만들 수 있습니다.

단순히 squash 명령만으로는 작업을 수행할 수 없습니다. 보통 git rebase의 interactive 모드를 사용하여 squash 작업을 진행합니다.

Squash를 사용하여 커밋 정리하기

1. git rebase -i

  • Rebase 시작: 작업을 정리하고 싶은 커밋의 개수만큼 이전으로 이동하여 rebase를 시작합니다.
git rebase -i HEAD~[커밋 개수]
  • Interactive 모드: 텍스트 에디터가 열리며, 여러 커밋 목록이 표시됩니다. 합치고 싶은 커밋 앞의 키워드를 squash 또는 간단히 s로 변경합니다.

  • 커밋 메시지 정리: 커밋 메시지를 정리하거나 합친 커밋들의 메시지를 하나로 만듭니다.

  • Rebase 완료: 모든 변경 사항을 저장하고 에디터를 닫습니다.

  • 변경 사항 반영: 최종적으로 정리된 커밋을 원격 저장소에 반영합니다.

2. git merge --squash

사용법:

git checkout main-branch
git merge --squash feature-branch
git commit 병합할 커밋 내용 
  • 장점:
    여러 커밋을 간단하게 하나로 합칠 수 있습니다.
    복잡한 Rebase 과정 없이 쉽게 사용 가능합니다.
  • 주의점:
    --squash 옵션으로 머지한 변경사항은 자동으로 커밋되지 않습니다. 따라서 수동으로 커밋해야 합니다.
    이미 원격 저장소에 푸시된 커밋에 대해 사용하는 것은 추천되지 않습니다.

Git의 squash 기능은 커밋 히스토리를 깔끔하게 관리하는 데 큰 도움이 됩니다. 작업 중간중간에는 자유롭게 커밋을 해도 되지만, 최종적으로 PR을 요청하기 전에는 이러한 방법을 통해 커밋을 정리하는 것이 좋습니다. 이렇게 하면 프로젝트의 커밋 히스토리를 깔끔하게 유지할 수 있습니다. 자세한 방법은 링크확인

https://www.delftstack.com/ko/howto/git/git-squash-commits/

profile
풀스택 개발자

0개의 댓글