PR (MR) 요청하기 전에 커밋을 깔끔하게 만드는 습관을 갖자
분기한 브랜치에서 작업하다가 PR (혹은 MR)을 날리려면 지저분한 커밋이력이 문제다. 아래는 main 브랜치에서 분기해서 feat/login 브랜치에서 3개의 커밋을 만들고 merge 하기 직전의 모습이다.
리뷰어에게 보기도 편하고, 브랜치 이력도 깔끔히 관리하기 위해 3개의 커밋을 하나로 합쳐서 merge 요청을 보낼 수 있다.
1. git rebase로 HEAD부터 n개의 커밋을 합치기
$ git rebase -i HEAD~3
pick 8a338ed 레이아웃 작업 1차 완료
pick 07fef02 레이아웃 작업 완료
pick ab0dbba 테스트 작성 완료
# Rebase 7457bdf..ab0dbba onto 7457bdf (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
...
아래 부분을 보면 옵션 s를 통해 squash 하여 이전 commit으로 합칠 수 있다고 나온다. (meld into previous commit)
...
# s, squash <commit> = use commit, but meld into previous commit
...
아래처럼 내가 합칠 커밋 2개에 대해 pick을 지우고 s로 바꾼다. (squash 하겠다는 뜻)
pick 8a338ed 레이아웃 작업 1차 완료
s 07fef02 레이아웃 작업 완료
s ab0dbba 테스트 작성 완료
# Rebase 7457bdf..ab0dbba onto 7457bdf (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit>
...
:wq!
wq!로 저장하고 나온다.
2. 합친 commit 메시지 생성
저장하고 나오면 곧장 커밋 메시지를 수정할 수 있게 해 준다. 합친 커밋에 대한 새로운 커밋메시지를 작성할 수 있다.
# This is a combination of 3 commits.
# This is the 1st commit message:
레이아웃 작업 1차 완료
# This is the commit message #2:
레이아웃 작업 완료
# This is the commit message #3:
테스트 작성 완료
난 다 지우고 아래처럼 수정했다.
로그인 작업 완료
:wq!
3. remote에 push해서 반영하기
이제 local은 깔끔해졌으니 remote에 반영할 차례다. 아래처럼 강제 push 하면 된다.
git push -f origin feat/login
참고
'Programming > DevOps, Tools' 카테고리의 다른 글
[Java, Spring] 버전 선택 가이드 2024 (Java 21) (0) | 2024.04.27 |
---|---|
[Git] 로컬의 프로젝트별로 git config를 적용하고 싶을 때 (0) | 2024.03.08 |
[클라우드] 가상화 - 클라우드 컴퓨팅의 핵심 기술 (0) | 2023.10.25 |
[Docker] mysql 8.0 설치하기 (0) | 2023.06.15 |
[운영체제] 병행 프로세스 (0) | 2023.05.14 |
댓글