git log --pretty=oneline
git rebase -i [커밋해시]
git rebase -i HEAD~[n]
명령어를 실행하면
pick 1234567 이건커밋입니다
pick 1357246 이것도커밋입니다
# command :
# p, pick <commit> = 커밋을 사용합니다
# r, reword <commit> = 커밋을 사용하지만 커밋메시지를 수정합니다
# e, edit <commit> = 커밋을 사용하지만 수정하기 위해 중지합니다
# s, squash <commit> = 커밋을 사용하지만 이전 커밋에 융합됩니다
# f, fixup <commit> = "squash"와 비슷하지만 이 커밋의 로그 메시지를 폐기합니다
# x, exec <command> = 명령(줄의 나머지 부분)을 쉘을 통해 실행합니다
# b, break = 여기서 중지합니다(이후에 'git rebase --continue'를 통해 리베이스를 마저 진행합니다)
# d, drop <commit> = 커밋을 제거합니다
# l, label <label> = 현재 HEAD에 이름을 붙여 라벨을 만듭니다
# t, reset <label> = HEAD를 라벨로 되돌립니다
# m, merge [-C <commit>| -c <commit>]<label> [# <oneline>]
# - 원본 커밋의 메시지를 사용하여 합병 커밋을 생성합니다(원번 합병 커밋이 지정되지 않는다면 일렬로 생성합니다). 커밋메시지 변경을 위해서는 -c <commit>을 사용하시오.
#
# 재정렬 될 수 있고, 위에서 아래로 실행됨
이런 편집기 화면이 나온다.
[명령어][커밋해시] [커밋메시지] 순으로 interactive rebase할 커밋 로그가 출력된다.
pick
에서 reword
로 변경한다.pick 1234 정상메시지1
reword 5678 오타메시지
pick 8123 정상메시지2
pick 2645 정상메시지3
새로운 편집기 화면이 뜬다.
오타아님메시지
# 주석 어쩌구저쩌구
# 샬라샬라
# '#'으로 시작하는 줄은 무시된다 메시지를 입력하지 않으면 중지도니다.
# 변경사항정보 주르륵
커밋 로그를 다시 확인해보면 git log
커밋 메시지가 정상적으로 수정된 것을 확인할 수 있다.
pick 1234 여기에 합치겠다
squash 5678 이거랑
squash 8123 이거를
pick 2645 정상 커밋
시간 오름차순으로 정렬되어 있으므로 1234 커밋에 5678, 8123 커밋이 모두 합쳐지게 된다.
편집기를 저장 종료하면
# 첫번째 커밋 메시지 :
여기에 합치겠다.
# 두번째 커밋 메시지 :
이거랑
# 세번째 커밋 메시지 :
이거를
# 주석 어쩌구저쩌구
# 샬라샬라
# '#'으로 시작하는 줄은 무시된다 메시지를 입력하지 않으면 중지도니다.
# 변경사항정보 주르륵
이런 편집기 화면이 나온다.
커밋세개를합쳤다 ㅎ
# 주석 어쩌구저쩌구
# 샬라샬라
# '#'으로 시작하는 줄은 무시된다 메시지를 입력하지 않으면 중지도니다.
# 변경사항정보 주르륵