GitNotes.12-10.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 12.10: rebase 후에 push 수행하기

가끔씩은 rebase 를 통해 history 를 재작성 해야 할 필요가 있으나, git push 는 재작성된 history 에 대해서 에러를 출력할 것이다.

이 문제는 git push --force 를 통해서 해결할 수는 있지만, 그보다는 로컬의 원격 tracking 브랜치가 실제 원격 브랜치와 동일하지 않을 경우 (마지막으로 fetch 해온 이후 다른 사용자가 push를 수행하는 등의 경우) push 로 하여금 실패하게 만드는 git push --force-with-lease 이용을 검토하는 것이 좋을 것이다. 이 방법은 다른 사용자가 최근에 push 한 내용을 부주의하게 뒤덮어 쓰는 사고를 방지할 수 있다.

주의: git push --force 는 물론이거니와 --force-with-lease 역시 브랜치의 history 를 재작성한다는 점에서 위험한 명령어이다. 만약 force push 를 수행하기 전에 다른 사용자가 해당 브랜치를 pull 해 갔다면, 해당 사용자가 이후 수행할 git pull 혹은 git fetch 명령어는 로컬 history 와 원격 history 가 분기되어 버린 상태이기 때문에 에러를 발생시킬 것이다. 이로 인해 해당 사용자는 예상치 못한 문제를 해결해야 하는 상황에 처하게 된다. 물론 해당 사용자가 reflog 를 활용하여 작업 내용을 복구할 수는 있겠지만, 많은 시간을 불필요하게 낭비할 수 밖에 없를 것이다. 만약 다른 contributor 들과 함께 작업하는 브랜치에 force push 해야 한다면, 사전 조율을 통해 다른 사용자들이 에러 상황을 겪지 않도록 하는 것이 좋을 것이다.

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

+ Recent posts