[git] 이전 코드 수정

·2021년 12월 11일
0

어쩌다보니 멍청하게도 코드를 잘못 작성하여 commit했다.
문제는 바로 전의 커밋이 아니라 그 이전의 커밋이라 git commit --amend 로 수정이 불가능하다는 것이었다...

git rebase --interactive

그래서 찾아보니 rebase --interactive 명령으로(또는 rebase -i) 수정이 가능하다고 한다.
(https://github.com/HomoEfficio/dev-tips/blob/master/Git 과거의 특정 커밋 수정하기.md)

그래서 따라해보았다.

  1. 먼저 git log 명령으로 수정하려는 커밋의 이전 커밋 ID를 확인한다.
  1. git rebase -i <수정하려는 커밋의 이전 커밋> 을 실행한다.
    그러면 편집기가 열린다. 거기서 수정하려는 커밋 ID 왼쪽에 'pick'이라는 글자를 'edit'으로 바꾸고 저장한다.
  1. 편집기에서 나오면 친절하게도 코드를 수정한 뒤 아래 명령어를 순서대로 입력하라는 메시지가 출력된다.
  1. 코드를 수정하고 git add .git commit --amend 명령을 입력한다.
  1. 이후 git rebase --continue 명령을 입력하면 끝
    성공했다면 수정했던 커밋의 ID는 이전과 달라져 있다.
    확인을 위해 커밋 ID를 확인하고 git show 명령으로 확인해보면 해당 내용이 바뀐 것을 알 수 있다.

참고로 원격 저장소에 올라간 커밋은 위와 같이 수정하기가 어렵다.
평소처럼 git fetchgit rebase 또는 git merge를 사용하면 특정 커밋 수정이 적용되지 않는다.
그래서 git push —force를 해야 하는데 위험하니까 웬만하면 하지 말자
아무튼 커밋을 할 때 좀 더 신중히 하자

0개의 댓글