Git 스쿼시 브랜치의 모든 커밋
Stewart Nguyen
2023년1월30일
이 기사에서는 단일 커밋으로 완료된 모든 커밋을 스쿼시하는 방법을 설명합니다.
기능 브랜치에서 많은 커밋을 수행했다고 가정하고 이제 이 브랜치의 모든 커밋을 하나의 커밋으로 그룹화하여 정리해야 합니다. Git은 이를 스쿼싱(squashing)이라고 합니다.
모든 커밋을 스쿼시하는 아이디어는 다음과 같습니다.
- 소프트 리셋으로 모든 변경 사항을 리셋합니다.
- 변경 사항을 다시 추가합니다.
- 새 메시지로 커밋합니다.
Git 소프트 리셋 변경 사항
소프트 리셋은 새로 추가된 파일을 제거하지 않으면서 모든 커밋을 취소합니다.
그렇게 하려면 기능 브랜치가 기반으로 하는 원본 커밋을 찾아야 합니다. 이는 일반적으로 main
과 같은 원본 브랜치의 이름입니다.
$ git log
commit a856ee456967a942ab379b27a4839962f88b92ce (HEAD -> feature/long-features)
Author: Cuong Nguyen
Date: Mon Dec 27 20:53:18 2021 +0700
Feature 2.3
commit 6f1599a18691906ed148dc40d2d290aaeceeaa5c
Author: Cuong Nguyen
Date: Mon Dec 27 20:53:03 2021 +0700
Subfeature 2
commit 94e35bae85f395c62fdaaa1aeaedbb11d2c94375
Author: Cuong Nguyen
Date: Mon Dec 27 20:52:39 2021 +0700
Subfeature 1
commit 9265e3bd97863fde0a13084f04163ceceff9a9d0 (grafted, tag: v1.0.0, branch-off-from-tag-v1.0.0)
Author: Cuong Nguyen
Date: Sun Dec 19 19:33:07 2021 +0700
Merge pull request #1 from stwarts/feature/shared-branch
이 예에서 feature/long-features
브랜치가 커밋 SHA 9265e3bd97863fde0a13084f04163ceceff9a9d0
(또는 브랜치 이름 branch-off-from-tag-v1.0.0
에서 체크아웃되었습니다.
모든 수정 사항을 재설정하려면 git reset --soft 9265e3bd97863fde0a13084f04163ceceff9a9d0
또는 git reset --soft branch-off-from-tag-v1.0.0
을 사용하십시오.
$ git reset --soft 9265e3bd97863fde0a13084f04163ceceff9a9d0
$ git status
On branch feature/long-features
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: sub_feature_1.txt
new file: sub_feature_2.txt
--soft
옵션은 커밋을 재설정하고 새 파일을 유지하도록 git을 지정합니다.
변경 사항을 다시 추가
git add -A
는 사용할 명령입니다.
-A
옵션은 모든 변경 사항이 추가되도록 지정합니다.
저지르다
마지막 단계는 git commit -m <message>
를 사용하여 새 커밋을 생성하는 것입니다.
$ git commit -m 'Squash 3 commits into 1'
[feature/long-features 8cc336c] Squash 3 commits into 1
2 files changed, 2 insertions(+)
create mode 100644 sub_feature_1.txt
create mode 100644 sub_feature_2.txt
$ git log
commit 8cc336c6d1b2e6ed55470f99b040d6835ec655e5 (HEAD -> feature/long-features)
Author: Cuong Nguyen <cuong.nguyen@oivan.com>
Date: Mon Dec 27 21:07:54 2021 +0700
Squash 3 commits into 1
commit 9265e3bd97863fde0a13084f04163ceceff9a9d0 (grafted, tag: v1.0.0, branch-off-from-tag-v1.0.0)
Author: Nguyễn Phú Cường <npcuong.011308@gmail.com>
Date: Sun Dec 19 19:33:07 2021 +0700
Merge pull request #1 from stwarts/feature/shared-branch