Uing? Uing!!

[Git 삽질기록] 이미 Push한 커밋 메시지 수정하기 본문

Git

[Git 삽질기록] 이미 Push한 커밋 메시지 수정하기

Uing!! 2020. 8. 8. 17:23
반응형

서론

나는 SourceTree를 이용해서 git 관리를 한다.

Git은 버전관리하기가 참 좋은 것 같다.

버전관리를 하는 방법은 다양하겠지만,

나 같은 경우에는 작은 기능 하나를 추가할 때마다 커밋&푸시를 한다.

 

본론

개인적인 드라이브처럼 쓰다 보니 commit&push를 한 번에 하다 보니,

push 이후에서야 커밋 메시지를 잘못 입력했다는 것을 알게 되는 경우가 있다.

 

오늘 같은 경우가 그렇다.

개인적인 프로젝트를 제작하는 중에 map 기능을 추가했다.

그리고 작은 에러가 발생해서 이 에러를 잡은 뒤에 'remove map duplicate error'라는 메시지로 커밋을 했다.

푸시 이후에 깨달았다. 으악! 'add map' 이후에 커밋을 안 했다.

추가한 기록도 없는 기능에서 에러를 잡았다고 메시지를 집어넣은 것이다 ㅠㅠ

 

구글링을 통해 이미 push한 커밋 메시지를 수정하는 방법을 확인하고 적용했다.

 

결론

1. 커맨드 창에서 rebase를 사용해 수정 모드로 들어간다.

아래 줄은 '바로 직전'의 commit을 수정하고 싶을 때의 예시이다.

만약 바로 직전이 아닌 조금 더 전의 내용을 수정하고 싶다면 HEAD~2, HEAD~3처럼

HEAD~{지금보다 몇 번째 전의 commit을 수정할지} 식으로 입력하면 된다.

git rebase HEAD~1 -i

(SourceTree라면 오른쪽 위의 '터미널' 실행)

 

2. i를 눌러 편집 모드로 들어간 뒤, 'pick'를 reword'로 바꾼다.

reword는 내용을 그대로 둔 뒤 커밋 메시지만을 수정하는 명령어이다.

따라서 편집 모등서 맨 앞의 pick를 reword로 수정한 뒤,

esc를 눌러 편집을 종료하고,

:wq!를 입력하고 enter하여 내용을 저장한다.

 

그러면 이전에 push해 놓은 commit message를 수정할 수 있게 된다.

 

3. commit message를 수정한다.

이제 본격적으로 커밋 메시지를 수정하러 들어가서 입맛대로 수정을 한다.

모든 수정이 완료되면 2번에서와 같이 esc -> :wq! -> enter하여 종료할 수 있다.

 

4. git push --force 메시지로 덮어씌운다.

수정을 완료했다면 아래를 입력해서 수정된 커밋 메시지를 저장한다.

git push --force

입력 후 잠시 기다리면 push가 완료되었다는 메시지를 볼 수 있다.

완료 이후에 다시 버전을 확인하러 들어가 보면 원하던 커밋 메시지로 변경된 것을 볼 수 있다.

(SourceTree 기준으로는 '패치'를 통해 업데이트 내역을 바로 받아볼 수 있다.)

 

반응형
Comments