이전 영상에서는 git으로 다른 개발자와 협업을 하는 상황에서 git push를 하기 전에 git pull을 해야 할 때가 많다. 그리고 git pull은 리모트 레포지토리에 있는 branch를 가져와서 현재 branch에 자동으로 merge하는 커맨드라고 했었다. (이때 branch를 가져온다는 건 그 branch가 가리키고 있는 커밋 이전에 이루어진 모든 커밋들을 가져오는 것이다.)
그런데 merge말고 딱 가져오는 단계까지만 해주는 커맨드도 있다. 그것은 바로 git fech라는 커맨드다. fetch는 우리말로 가져오다라는 뜻이다. git fetch를 쓰면 가져오기만 하고 자동으로 merge는 되지 않는다.
git fetch는 리모트 레포지토리에 있는 브랜치의 내용을 일단 가져와서 살펴본 후에 머지하고 싶을 때 사용하는 것이다. 만일 회사에 신입사원이 들어와서 나의 calcultor.py 파일을 잘못된 방향으로 수정했다고 가정해보자.
만일 그대로 git pull을 하게 되면 다른 개발자가 코드를 어떻게 추가했는지도 모른 채 프로그램에 자동으로 신입사원이 잘못 수정한 fuction이 내 브랜치에도 들어올 것이다. 그래서 이렇게 git pull하게 될 내용이 조금 의심스러운 상황에서는 git fetch로 리모트 레포지토리의 branch 내용을 가져오기만 하는게 좋다.
이 표시는 지금 리모트 레포지토리에 있는 branch의 내용이 로컬 레포지토리로 들어왔다는 뜻이다. 이때 이 두 개의 브랜치가무엇이 다른지 살펴볼때 쓰는 git command가 있다. 그것인 git diff이다.
git diff는 두 커밋 간의 차이 뿐만 아니라 두 브랜치 간의 차이를 볼 수 있다. git diff premium origin/premium
을 입력하면 두 개의 차이를 볼 수 있다.
이렇게 리모트 레포지토리의 브랜치에 문제가 생겨나면 1,2번으로 해결할 수가 있다.
이렇게 git fetch는 두가지의 경우에 사용한다. 다른 개발자뿐만 아니라 자기가 잘못된 코드를 쓰게 될 수도 있으니깐 말이다. 어떤 경우든 git fetch로 가져와서 git diff로 서로 비교하면서 확인하면 된다.