squash commit already pushed
이미 푸시된 커밋을 합치는 법
제대로 안 되니 리베이스 연습 필요
How to squash commits in git after they have been pushed?
squash 대상을 알아 내기 위해 로그 조회
$ git log --graph --oneline * e52f9b7 관련 자료 상세 페이지 api * 06b47c6 주석 삭제 * 752c009 수정 * 25f45cd 쿼리 수정 * 990020e 수정 중 * 24c11fd 수정중 * f480d20 수정 중 * 13ee1fc 수정중 * 0656971 수정 중 * b722187 수정 중 * ac5e93f 수정 중 * 948e714 수정 중 * a5e3717 수정 중 * beb1803 수정 중... * 198454c 수정 중 * 690a40b 수정 중 * 19abe54 수정중 * e24c3b9 수정중 * 17dd293 수정중 * 2433b70 수정 중 * 7210b7e 수정중 * b1a4177 수정 중.. * fac32f6 수정 중 * 62262c9 ..ing * 5850bbf ..ing * a03551d ..ing * 5fc37db ..ing * ccab8a5 ..ing
로컬에서 리베이스
git rebase -i origin/master~4 master
force 커밋
git push origin +master
Squash All Commits Related to a Single Issue into a Single Commit
git rebase -i HEAD~4
에디터 창에서 rebase 대상 커밋이 순서대로 표시됨(예전 커밋이 위에 있음)
pick abcd pick 1234 pick 34ef pick 87ad
맨 위 커밋은 pick 으로 남기고 다른 커밋은 squash 나 fixup 으로 수정
pick abcd squash 1234 squash 34ef squash 87ad
모두 squash 나 fixup 으로 바꾸면 "Cannot 'squash' without a previous commit” error while rebase" 에러가 남
에디터에서 저장을 하면 squash 가 완료됨.
커밋 로그를 수정할 경우 amend 실행
git commit --amend
이미 push 되었으므로 강제 푸시(--force)
git push origin master --force
주의
강제 push 를 했으므로 다른 client 는 모두 다시 fetch 받아야 함
Git Howto: Revert a Commit Already Pushed to a Remote Repository
이미 푸시된 커밋을 되돌리는 법