| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- input
- 자바문법
- Java
- vscode
- ArrayList
- 인텔리제이
- javascript
- junit
- js
- Array
- string
- CSS
- 자바스크립트
- IntelliJ
- Visual Studio Code
- 단위테스트
- 자바
- 정규식
- 스프링부트
- java테스트
- math
- 테스트자동화
- html
- SpringBoot
- Eclipse
- 배열
- junit5
- list
- HashMap
- 문자열
- Today
- Total
어제 오늘 내일
[Git] 지저분한 커밋 내역 하나로 합치기 (Squash 완벽 가이드) 본문
개발을 하다 보면 "일단 저장(save)", "오타 수정", "버그 수정의 수정" 같은 자잘한 커밋들이 쌓이기 마련입니다. 혼자 볼 때는 괜찮지만, 나중에 Pull Request를 보내거나 동료가 내 코드를 볼 때 민망했던 적 있으시죠?
이번 포스팅에서는 여러 개의 지저분한 커밋을 깔끔하게 하나로 합치는 'Squash(스쿼시)' 기술을 소개합니다. 이 기능을 익히면 여러분의 Git history가 예술처럼 깔끔해질 것입니다.
커밋을 합치는 방법은 크게 두 가지가 있습니다.
- 정석적인 방법:
Interactive Rebase사용하기 - 쉬운 야매(?) 방법:
Reset --soft사용하기
가장 많이 사용되는 Rebase 방식부터 차근차근 알아보겠습니다.
방법 1. 정석대로 합치기 (git rebase -i)
가장 강력하고 세밀한 조정이 가능한 방법입니다. 최근 3개의 커밋을 하나로 합친다고 가정해 보겠습니다.
1단계: Rebase 모드 진입
터미널에 다음 명령어를 입력합니다. 숫자는 합치고 싶은 커밋의 개수입니다.
$ git rebase -i HEAD~3
2단계: 편집기에서 'pick'을 'squash'로 변경
명령어를 입력하면 편집기 창이 뜹니다. 보통 가장 위에 있는 것이 가장 오래된 커밋입니다.
pick 1a2b3c 첫 번째 커밋 (기준이 될 커밋)
pick 4d5e6f 두 번째 커밋 (합쳐질 커밋)
pick 7g8h9i 세 번째 커밋 (합쳐질 커밋)
여기서 가장 위에 있는 커밋은 pick으로 놔두고, 그 아래에 합치고 싶은 커밋들의 앞글자를 pick -> squash (또는 s)로 변경합니다.
pick 1a2b3c 첫 번째 커밋
s 4d5e6f 두 번째 커밋
s 7g8h9i 세 번째 커밋
해석: "밑에 있는
s표시된 커밋들을 맨 위의pick커밋 안으로 꾹꾹 눌러 담겠다(Squash)!"
3단계: 통합 메시지 작성
저장하고 나오면, 합쳐진 커밋들의 메시지를 수정할 수 있는 새 창이 뜹니다.
불필요한 메시지는 지우고, 하나의 깔끔한 메시지로 정리한 뒤 저장하면 끝입니다!
방법 2. 더 쉽게 합치기 (git reset --soft)
rebase가 너무 복잡하고 무섭다면, 조금 더 직관적인 방법이 있습니다. "과거로 돌아가되, 작업물은 살려두는" 방식입니다.
1단계: 합치고 싶은 시점 직전으로 되돌아가기
3개의 커밋을 합치고 싶다면, 3단계 전으로 돌아갑니다.
$ git reset --soft HEAD~3
2단계: 다시 커밋하기
이제 3개의 커밋 내용은 모두 Staging Area에 모여 있습니다. 그냥 새로 커밋만 하면 됩니다.
$ git commit -m "깔끔하게 정리된 하나의 기능 구현"
결과: 기존 3개의 자잘한 커밋이 사라지고, 방금 만든 1개의 튼튼한 커밋으로 대체됩니다.
⚠️ 주의사항: 이미 Push 했다면?
지난 포스팅에서 reset 때 말씀드린 것과 원칙이 같습니다.
- 나만 쓰는 로컬 브랜치라면: 마음껏 합치셔도 됩니다.
- 이미 원격(GitHub 등)에 Push 했다면: 커밋을 합치면 Git history가 변경되므로, 협업 중인 동료들에게 큰 혼란을 줄 수 있습니다. (충돌 발생!)
Tip: 이미 Push 된 내역을 합쳐야 한다면, 팀원들과 충분히 상의한 후
push --force를 사용해야 합니다.
마치며
"좋은 코드는 좋은 커밋 메시지에서 시작된다"는 말이 있습니다.
개발 중간중간에는 편하게 커밋하고, 작업을 마친 후에는 오늘 배운 Squash로 history를 예쁘게 다듬어 보세요. 미래의 나, 그리고 동료들이 여러분을 "깔끔한 개발자"로 기억할 것입니다.
'IT > Git' 카테고리의 다른 글
| [Git] 알짜배기 커밋만 쏙! 골라오는 Cherry-pick 완벽 가이드 (0) | 2026.03.08 |
|---|---|
| [Git] 다 쓴 브랜치 정리하기! 로컬 & 원격 브랜치 삭제 방법 (0) | 2026.03.07 |
| [Git] 커밋을 되돌리고 싶을 때! Reset vs Revert 완벽 정리 (0) | 2026.03.06 |
| [Git] 방금 한 커밋 되돌리기: git commit --amend 완벽 활용법 (0) | 2026.03.06 |
| [Git] 아차! 실수했다... 커밋 메시지 수정하는 법 (0) | 2026.03.05 |
