-
Notifications
You must be signed in to change notification settings - Fork 0
change commit message
커밋 메세지를 잘못 입력하고 push 를 해버렸을 때, 아래와 같이 커밋 메세지를 바꿀 수 있습니다.
하지만 마지막에서도 언급했듯이 force 로 강제 푸시를 하기 때문에 주의해야 합니다.
1. rebase로 편집모드 들어가기
2. pick을 reword로 변경하기
3. commit message 수정하기
4. 강제(force) push 수행하기
git rebase HEAD~1 -i
위에서 HEAD~숫자 에서 숫자는 몇번째 전 커밋까지 편집모드로 들어갈 것인지 넣습니다.
좀더 전의 내용을 수정하고 싶다면 HEAD~2, HEAD~3처럼 수정이 필요한 commit이 몇 번째 전인지 고려하고, 그 숫자로 변경해 입력합니다.
터미널에서 위 명령어로 직전 commit message를 수정하기 위해 편집모드로 들어갑니다.
편집모드로 들어가게 되면 아래 스크린샷 같이 나오게 됩니다.
commit message 앞의 'pick' -> 'reword' 변경 후, esc -> :wq! -> enter
💡 이때 Commit Message는 건들지마세요! 그 뒤에 바꿔야 합니다.
i 키를 눌러서 수정 모드로 들어갑니다.
수정모드로 들어가면, 기존에 작성한 commit message가 보여 당장이라도 고치고 싶겠지만 잠시 참아주세요.
message 앞쪽에 위치한 단어 pick 을 reword(Commit Message 수정명령어)로 바꿔줍니다.
변경을 완료했다면 esc -> :wq! -> enter순으로 해당 내용을 저장합니다.
commit message 수정 후, esc -> :wq! -> enter
i 키를 눌러서 수정 모드로 들어갑니다.
commit message를 수정! step 2번에서처럼 esc -> :wq! -> enter로 에디터를 빠져나옵니다.
git push origin 경로로 commit을 push하면 됩니다. 아래 참고
git push origin 경로 --force
git push origin 경로 --f
예시) feature/#3 branch에서 작업중이라면?
git push origin feature/#3 --force 입력!
-
--force(--f로도 표기가능) 명령어는 원격 저장소의 내용이 로컬 저장소의 내용과 일치하도록 원격 저장소의 변경사항들을 강제로 덮어씌웁니다. - 만약 Protection rule 이 적용되어 있다면 rule 을 잠시 해제한 후 push 를 해야함 아래와 같은 문구가 뜹니다.
- 정상적으로 된 모습
그리고 github를 가보면? 정상적으로 push가 이루어져 있는 것을 볼 수 있습니다.
rebase 상태에서 터미널을 꺼버리거나 하면 아래처럼 $ git rebase --abort 처럼 rebase 하기 이전으로 되돌릴 수 있습니다.
force 명령어는 검색해보면 절대 사용하지 말라는 내용이 많을 정도로..원격 저장소의 commit들이 유실될 수 있어 굉장히 조심히 사용해야합니다. 특히 해당 원격 저장소를 다른 사용자들과 공유하는 상황이라면 사용하지 않는게 좋다고 합니다.
다른 사용자의 작업물에 강제로 덮어쓰기가 이루어져, 다른 사용자들의 작업과 원격 저장소 내용의 연결을 끊는 재앙을 가져올 수 있기 때문. 반드시 잘 알고 사용해야 합니다!!