728x90
- vi 편집기로 md 파일을 작성 중에 줄바꿈이 제대로 이뤄지지 않아서 5번의 도전 끝에 성공했다
- 하지만 이러한 커밋 메시지는 이쁘지도 않고, 2,3,4,5는 그리 중요한 정보도 아니다
- 그래서 나는 위 커밋을 모두 하나의 커밋으로 합쳐보려고 한다!!
git rebase -i [커밋 ID]
- fix : 1.6 줄바꿈이 제대로 수행되지 않음 의 커밋 ID를 가져온다
- commit은 과거의 것부터 차곡차곡 쌓아올려져 있기 때문에 하나의 commit으로 합칠 때는 최근 것부터 합쳐야한다!
- 즉, 2,3,4,5 를 제일 오래된 commit에 합칠 것이다
git rebase -i 4a645679e545d8d650f10d50cbfc728eb753b6e5^
- 해당 커밋 ID는 “fix : 1.6 줄바꿈이 제대로 수행되지 않음”이다
- 여기서 ^를 붙이는 이유는 해당 커밋의 부모에게 접근해야하기 때문이다
- commit ID에 수정하려는 commit의 이전 commit ID를 입력해도 된다
- git rebase -i 를 입력하면 위와 같이 나온다
- 여기서 바꿀 커밋들을 pick → edit 로 변경한다
- !wq 를 통해 저장을 한다
- tig를 통해 현재 HEAD가 어느 위치를 가르키는지 확인해보자
- 여기서 commit 2의 수정 내용은 살리면서 커밋 자체는 제거해야한다
git reset --soft HEAD^
git reset --soft HEAD^
- git status를 통해 상태를 확인해보자
git reset --soft HEAD^가 무엇인가요?
- 현재 HEAD의 부모로 reset을 진행하면서, 파일 수정 내역을 보관하는 —soft 옵션으로 reset을 진행
- 즉, 제거할 커밋의 수정 내역만을 살리고, 커밋 자체는 제거한다
git commit --amend
git commit --amend
- :wq 저장
git commit ---amend는 무슨 명령어인가요?
- 이전 커밋을 수정하는 경우에 사용한다
git rebase --continue
git rebase --continue
- tig를 통해 확인해보니 commit 2가 사라졌다!
- 그리고 현재 HEAD가 commit 3에 위치한다
반복
git reset --soft HEAD^
- 전처럼 reset 하고 상태를 보면 이번에는 edit에 2,3이 있는 것을 알 수 있음
git commit --amend
- 이번에는 “—amend 하는 중 ~”을 추가하여 원래의 커밋 내용을 수정해보자
git rebase --continue
- tig를 통해 커밋 메시지가 제대로 수정되어있는지 확인해보자
- 제대로 수정됐다
- 3이 없어진 것을 알 수 있다
결과
- 위 과정을 반복하면서 edit로 바꿨던 commit을 모두 rebase를 하니 아래와 같은 문구가 나왔다
- 처음과 다르게 commit 2,3,4,5 가 없어지는 것을 알 수 있다!
- 마지막으로 git push -f 를 해주면 github 레포에서도 깔끔한 커밋 메시지를 볼 수 있다
정리
여러 개의 commit을 하나의 commit으로 합칠 때의 과정을 간단히 요약해보자
- git rebase -i [커밋 ID] 를 통해 바꾸고 싶은 commit의 전 commit의 ID를 입력한다
- 이때 중요한 점은 ID를 입력할 때 부모를 나타내는 ^를 적어주자
- 바꿀 커밋들을 pick → edit로 변경
- git reset —soft HEAD^
- git commit —amend
- git rebase —continue
- 1 ~ 5 반복
- git push -f
728x90
'Git' 카테고리의 다른 글
[kerdy] 서브모듈을 사용해서 yml 숨기기(feat. 하나의 yml에서 여러 profile 관리하기) (2) | 2023.08.02 |
---|---|
cherry-pick (0) | 2022.06.20 |