본문 바로가기

Git

[Git] git squash 방법 (여러 커밋 하나로 합치기)

MR 올리기 전 여러 커밋을 한꺼번에 합친 squash 로 올리려 한다. (추후 cherry-pick 할 때에도 용이)

Git Squash는 여러개의 Commit을 하나의 Commit으로 만들어준다.

방법은 아래와 같다.

 

1.rebase (최근 3개 커밋 합치려면 아래처럼 작성)
git rebase -i HEAD~3 

2.그럼 아래와 같이 뜸
pick abc123 First commit message
pick def456 Second commit message
pick ghi789 Third commit message

여기서 첫 번째 커밋을 제외한 나머지 커밋의 pick을 squash 또는 s로 변경한다.

다음과 같이 변경.
pick abc123 First commit message
squash def456 Second commit message
squash ghi789 Third commit message

>>위와 같이 수정후 etc키 누르기> 맨아래에 가서 :wq 입력 후 enter키 누르면 저장됨

 

3. 커밋 메시지 수정

제일 위 커밋메시지만 남기고 나머지는 지우고, 메시지를 원하는 것으로 수정하고 저장한다.

소스트리로 확인 시 맨 위와 같이 아래(빨간점 2개)내용이 반영되어 squash된 것을 확인가능(현재 빨간점2개 커밋들은 origin 깃에 이미 올라간 시점이었음)

* 만약 잘못 커밋 올렸으면 git commit --amend 입력 후 메시지 수정 후 저장 누르면 된다.

4. git log 로 반영 확인

5. 강제 푸쉬 올리기
 git push origin feature/popup --force

 

참고사이트)

 

[Git] Branch 병합 전략(Merge, Rebase, Squash) 개념/예제

이번 포스팅에서는 Git 브랜치 병합 전략에 대해 포스팅하려 한다. 평소에 Git을 사용하며 Merge만 거의 사용해서 브랜치를 합쳤는데 이렇게 하니 히스토리가 지저분해진 것을 보고 Rebase와 Squash에

cjw-awdsd.tistory.com