git rebase 후 push를 할 때 아래와 같은 에러가 발생했다.
로컬의 test 브랜치가 이미 원격 저장소 test 브랜치에 반영되어 있다.
로컬에서 test 브랜치로 작업하면서 커밋들이 쌓였다.
리베이스를 진행했다.
문제는 여기다.
로컬에서는 리베이스로 커밋들이 fast-forwarded됐다.
하지만 원격 저장소의 test브랜치는 그 히스토리를 알 리가 없다.
따라서, 로컬에서 test 브랜치로 푸쉬를 해도 원격 저장소의 test와 히스토리가 다르기에 push가 되지 않는 것이다.
개인 프로젝트라면 -f
로 원격 저장소의 test 브랜치를 강제로 덮을 수 있다. 피해가 가도 나만 고생하면 되기 때문이다.
하지만 협업을 하는 프로젝트라면 -f
옵션은 사용하면 안 된다.
보통 git checkout -b 새로운 브랜치
명령어를 사용한다.
아직 원격 저장소에 반영된 브랜치가 아니므로 위와 같은 에러를 방지할 수 있다.