본문 바로가기

기타

[git] 원격 저장소와 local저장소의 소스코드를 일치시키는 방법

원격 저장소(깃헙)의 소스코드와 로컬 저장소의 소스코드를 일치키는 방법입니다.

명령어만 빠르게 확인하고 싶으시면 아래 명령어를 확인하시면 됩니다.

git fetch --prune origin 
git reset --hard origin/main

 

<명령어 설명>

먼저 깃을 처음 다루는 사람들이 하는 가장 큰 착각 중 하나가 단순히 pull을 받으면 원격 저장소와 내 컴퓨터의 소스코드가 일치된다고 생각하는 것입니다. 하지만 pull을 받는다고 하여 원격저장소의 브랜치와 로컬브랜치의 소스코드가 같아지지는 않습니다. 왜냐하면 pullfetch + merge이며, 기존 로컬에 있는 코드와 원격에서 받은 코드가 merge 되며 합쳐지기 때문입니다.

때문에 fetch를 통하여 remote tracking branch (origin/main)를 원격 저장소와 일치시킨 뒤 git reset --hard origin/main 명령을 통해 로컬 브랜치의 소스코드를 원격 저장소의 코드와 일치시켜야 합니다.

즉 위의 명령어를 정리하자면,

1. git fetch --prune origin을 통해 remote tracking branch (origin/main)를 깃 헙 원격 저장소와 일치시킨다.

2. git reset --hard origin/main 를 통해 방금 전 동기화된 remote tracking branch (origin/main)에 로컬 브랜치를 일치시킨다.

 

<보충개념>

여기서 git prune이란?

fetching 하기 전, 리모트에 존재하지 않는 리모트 트래킹 브랜치를 삭제

git reset --hard origin/main의 의미?

origin/main branch와 일치시킨다. (git fetch로 remote tracking branch의 커밋을 remote 저장소의 브랜치와 일치시켰기에 효용이 있다)

git clean이란?

작업하고 있던 파일을 Stash 하지 않고 단순히 그 파일들을 삭제하고 싶은 경우에 사용하는 명령어

추적되고 있지 않는(unstage) 경우의 파일이 삭제되는 경우

리모트 트래킹 브랜치란?

밑에 링크로 남긴 스택오버플로우 두번째 답변이 리모트 트래킹 브랜치에 대한 이해를 할 때 많은 도움이 되었다.

https://stackoverflow.com/questions/16408300/what-are-the-differences-between-local-branch-local-tracking-branch-remote-bra