커밋 수정하기 - 2

박태영·2024년 6월 15일

git

목록 보기
21/44

git rebase -i (커밋 해시)

  • i는 interactive 모드의 약자
  • 과거의 commit을 분할/삭제/병합
  • 커밋 해시는 수정할 커밋(들)의 바로 이전 커밋 해시 값
  • git rebase -i 명령어 리스트

    명령어설명
    p(pick)커밋 그대로 두기
    r(reword)커밋 메시지 변경
    e(edit)수정을 위해 정지
    d(drop)커밋 삭제
    s(squash)이전 커밋에 합치기

과거의 commit 메시지 수정하기

  1. git rebase -i 명령어를 입력하고 나온 창에서 수정할 commit 앞의 기호를 'r' 로 바꾸어준다.
  2. 나타난 에디터 창에서 값을 수정/저장한 뒤에 창을 종료한다.
  3. 과거의 commit 메시지가 잘 수정 되었는지 확인한다.

과거의 commit 삭제 / 병합하기

  1. git rebase -i <커밋 해시> 입력후 삭제할 커밋 앞에 d 합칠 commit들 중 앞에 커밋에 s를 입력한 후 저장한다.
  2. commit 삭제는 바로 완료되고 두개의 commit을 합치는 에디터가 나오는데 내용을 수정 후에 저장하고 에디터를 닫는다.
  • 현재 브랜치 상황
  1. 2개의 커밋이 하나로 합쳐진 것을 확인할 수 있다

과거의 commit 분할하기

  1. 이전과 마찬가지로 git rebase -i 커밋해시값 을 입력한다.
  2. 수정할 커밋 앞의 값을 e로 수정한다.
  3. git log로 현재 상태를 보면 수정할 커밋이 되어있는 상태이다
  4. 해당 커밋을 나누기 위해 git reset --mixed HEAD^를 입력해서 작업 내역을 working directory로 옮긴다.
  5. 작업 내역을 하나씩 commit 한다
  • 현재 과정 그래프
  1. 현재 rebase 과정 중이므로 과정을 완료하기 위해
    git rebase --continue를 입력해 진행한다.
  2. 완료된 모습

  • 과거의 내역을 수정하는데 rebase가 쓰이는 이유
  1. 가장 최신의 commit은 과거의 모든 커밋의 변경점의 합이다.
  2. 따라서 과거의 커밋을 수정하기 위해서는 해당 커밋과 그 이후의 모든 커밋이 수정되어야 한다.
  3. 그래서 수정되는 commit전 부터 브랜치를 새로 만들어서 rebase로 전부 하나씩 수정한 후에 main branch에 붙이는 방식이 적합하다.
profile
어른 아이

0개의 댓글