Git remote history rewriting

주의!

먼저 다른 사람이 pull/push를 하지 않았는지 살펴보고, 안전하다고 생각되는 경우에만 시도한다.

상황 및 원인

remote에 push를 하였는데, 다시 rebase를 하고 싶다. 그런데

git push -f origin <branch>

를 해버리면 non-fast forward 에러가 난다. 이 경우는 receive.denyNonFastForward가 켜져 있는 경우로, 이것을 꺼줘야 제대로 작동하게 된다.

방법

remote에서

git config --local --get receive.denyNonFastForward

를 입력해보면 true가 나온다. 이것을

git config --local receive.denyNonFastForward false

를 입력하여 잠시 기능을 정지시킨 후, working tree에서

git push origin <branch> --force

를 하여 강제로 push한다. 그리고 다시 origin에서

git config --local receive.denyNonFastForward true

를 하여 원상태로 복구한다.

댓글