자바생
article thumbnail
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으로 합칠 때의 과정을 간단히 요약해보자

  1. git rebase -i [커밋 ID] 를 통해 바꾸고 싶은 commit의 전 commit의 ID를 입력한다
    • 이때 중요한 점은 ID를 입력할 때 부모를 나타내는 ^를 적어주자
  2.  바꿀 커밋들을 pick → edit로 변경
  3. git reset —soft HEAD^
  4. git commit —amend
  5. git rebase —continue
  6. 1 ~ 5 반복
  7. git push -f

 

728x90
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그