이전 영상에서는 git으로 다른 개발자와 협업을 하는 상황에서 git push를 하기 전에 git pull을 해야 할 때가 많다. 그리고 git pull은 리모트 레포지토리에 있는 branch를 가져와서 현재 branch에 자동으로 merge하는 커맨드라고 했었다. (이때 branch를 가져온다는 건 그 branch가 가리키고 있는 커밋 이전에 이루어진 모든 커밋들을 가져오는 것이다.)

스크린샷 2022-08-22 오후 9.47.05.png

스크린샷 2022-08-22 오후 9.49.05.png

스크린샷 2022-08-22 오후 9.49.19.png

그런데 merge말고 딱 가져오는 단계까지만 해주는 커맨드도 있다. 그것은 바로 git fech라는 커맨드다. fetch는 우리말로 가져오다라는 뜻이다. git fetch를 쓰면 가져오기만 하고 자동으로 merge는 되지 않는다.

스크린샷 2022-08-22 오후 9.50.53.png

git fetch는 리모트 레포지토리에 있는 브랜치의 내용을 일단 가져와서 살펴본 후에 머지하고 싶을 때 사용하는 것이다. 만일 회사에 신입사원이 들어와서 나의 calcultor.py 파일을 잘못된 방향으로 수정했다고 가정해보자.

스크린샷 2022-08-22 오후 9.51.58.png

만일 그대로 git pull을 하게 되면 다른 개발자가 코드를 어떻게 추가했는지도 모른 채 프로그램에 자동으로 신입사원이 잘못 수정한 fuction이 내 브랜치에도 들어올 것이다. 그래서 이렇게 git pull하게 될 내용이 조금 의심스러운 상황에서는 git fetch로 리모트 레포지토리의 branch 내용을 가져오기만 하는게 좋다.

//git fetch

스크린샷 2022-08-22 오후 9.53.43.png

이 표시는 지금 리모트 레포지토리에 있는 branch의 내용이 로컬 레포지토리로 들어왔다는 뜻이다. 이때 이 두 개의 브랜치가무엇이 다른지 살펴볼때 쓰는 git command가 있다. 그것인 git diff이다.

스크린샷 2022-08-22 오후 9.55.48.png

git diff는 두 커밋 간의 차이 뿐만 아니라 두 브랜치 간의 차이를 볼 수 있다. git diff premium origin/premium 을 입력하면 두 개의 차이를 볼 수 있다.

스크린샷 2022-08-22 오후 9.56.18.png

스크린샷 2022-08-22 오후 9.57.01.png

스크린샷 2022-08-22 오후 9.59.34.png

이렇게 리모트 레포지토리의 브랜치에 문제가 생겨나면 1,2번으로 해결할 수가 있다.

이렇게 git fetch는 두가지의 경우에 사용한다. 다른 개발자뿐만 아니라 자기가 잘못된 코드를 쓰게 될 수도 있으니깐 말이다. 어떤 경우든 git fetch로 가져와서 git diff로 서로 비교하면서 확인하면 된다.