WEBBOOK CHAPTER

현장에서 살아남는 Git: 8장 fetch·pull·push를 하나로 뭉개지 않는다

8장 fetch·pull·push를 하나로 뭉개지 않는다

fetch는 원격 상태를 가져와 origin/main 같은 remote-tracking branch를 갱신하지만 내 main을 합치지 않는다. pull은 fetch 뒤에 merge 또는 설정에 따른 rebase를 수행한다. push는 로컬 참조와 객체를 원격으로 보낸다.


git fetch --prune origin
git log --oneline --left-right --graph main...origin/main
git diff main..origin/main

--prune은 원격에서 삭제된 브랜치의 오래된 추적 이름을 정리한다. 가져오기 전에 무슨 일이 합쳐질지 보고 싶다면 pull보다 fetch가 선명하다. 팀의 pull 전략을 설정으로 고정할 수 있다.


git config pull.rebase false   # merge
# 또는 팀 합의가 있다면 true

주석까지 한 줄로 복사하지 않는다. 어떤 정책을 골랐는지 저장소 문서에 적는다. SourceTree의 Fetch, Pull, Push 버튼과 IntelliJ Git 메뉴도 같은 동작이다. 체크박스의 “rebase”, “force”, “prune”을 읽지 않고 기본 버튼만 누르지 않는다.