본 문서는 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)
'번역 > Git Notes for Professionals' 카테고리의 다른 글
13.1: Git 에서 사용할 편집기 설정하기 (0) | 2019.11.13 |
---|---|
13: 환경 설정 (configuration) (0) | 2019.11.12 |
12.9: git-pull 로 하여금 자동으로 merge 대신 rebase 를 수행하도록 설정하기 (0) | 2019.11.11 |
12.8: 대화형 (interactive) rebase 작업 취소하기 (0) | 2019.11.11 |
12.7: 코드 리뷰를 위한 rebase 수행하기 (0) | 2019.11.08 |