리모트 저장소와의 동기화

fetch 단계

Git은 fetch 단계에서 원격 저장소의 변경 사항을 로컬 저장소로 가져오는데 이 때 원격 추적 브랜치를 사용하게 된다. 원격 브랜치에 대한 원격 추적 브랜치가 존재하지 않을 경우 원격 추적 브랜치를 만들고 이 원격 추적 브랜치에 변경 사항을 공유 받게 된다.

fetch는 다음과 같이 fetch 명령을 통해 실행된다.

$ git fetch <remote-name>
$ git fetch origin

FETCH_HEAD

  • git fetch 명령이 실행되면 원격 저장소로 부터 가져온 모든 브랜치의 헤드를 .git/FETCH_HEAD 파일에 기록하게 된다. 즉, FETCH_HEAD는 원격 저장소로부터 가져온 브랜치의 HEAD를 의미한다.
  • git fetch 이후에만 유효한데, 패치 작업 직후에 가져온 브랜치의 최신 커밋을 참조할 때 유용하다.

브랜치 최신화

로컬 브랜치를 리모트 저장소의 브랜치와 동기화하고 최신화(최신 커밋을 참조)하려면 다음과 같이 master 브랜치를 먼저 패치한 후 최신화 하고자 하는 브랜치로 체크아웃하여 리셋을 실행한다.

ㅇ master 패치

$ git checkout master
$ git fetch
$ git pull origin master

ㅇ 브랜치 최신화

$ git checkout [브랜치]
$ git reset --hard origin/[브랜치]

reset --hard 명령어는 작업 디렉토리와 인덱스의 상태를 모두 리셋해 버리므로 조심해야 한다. 현재 변경사항이 있거나 작업중이라면 최신화하기 전에 git stash 명령어로 stash에 안전하게 보관한 후 reset --hard 명령어를 실행해야 한다.

results matching ""

    No results matching ""