#32 - Git 원격 저장소 원리

김현준·2022년 12월 28일
0

GIT

목록 보기
32/41

이번 시간에는 지역저장소와 원격저장소가 상호작용을 할때 git 의 내부는 어떤 변화가 있는지 , 어떤 원리로 작동하는지 알아보겠습니다.

새로운 저장소 repo 를 만들고 이동한다음에 f1.txt 를 만들고 addcommit 을 해줍니다.

github 로 이동해서 여기서도 저장소를 만들어 줍니다.

그리고 repo 를 만들면서 생성된 ssh 주소를 복사한 뒤에
git remote add 을 사용해서 저장소를 연결 해줍니다.

gistory 에 들어가면 .git\config 의 내용만 변했습니다.
파일을 보면 origin 이라는 remoteconfig 파일에 저장된 것을 확인 할 수 있습니다. 그것의 url 주소도 저장되었습니다.

이후 push 를 하기 위해서 git push --set-upstream origin master 를 실행해줍니다.

이때 내부적으로 변화가 생깁니다.
master 라는 branch를 원격저장소의 branch 와 연결시켜주는 작업이 되고 업로드 하는 작업이 실행됩니다.

다시 gistory 로 가보면 master 이라는 branch 가 추가되었습니다. 그리고 remote=origin , 즉 originmaster 과 연결되었다는 뜻입니다.

.git\refs\remotes\origin\master 을 보면 commit 한 파일의 내용이 존재하는 것을 확인 할 수 있습니다. 이때 경로에 remote 가 들어가 있는데 이는 원격저장소임을 의미합니다. 금방 push 를 했기 때문에 원격 저장소에서도 파일이 존재하게 됩니다.

또한 .git\refs\heads\master 에서도 똑같이 commit 한 파일의 내용이 존재합니다. 이는 원격저장소가 아니라 로컬 저장소에 있는 파일임을 의미합니다.

git log --decorate --graph 를 하면 HEADmasterorigin 을 동시에 가르킵니다. 이는 같은 commit 의 내용을 가졌다는 의미입니다.

f1.txt 의 내용을 두번을 수정하고 두번을 commit 를 하겠습니다.

다시 git log --decorate --graph 을 하면 master 는 2번의 commit 을 하기 때문에 더 위에있습니다. 하지만 아직 push 를 하기 전이기 때문에 origin/master 는 1 의 commit 에 존재합니다.

그렇다면 git log 를 했을때 git 이 이러한 정보를 알 수 있었던 이유가 무엇일까요?

바로 .git\refs\heads\master 에 있는 commit 의 내용과

.git\refs\remotes\origin\master 에 담긴 내용을 통해서 가능했던 것입니다.

이제 다시 git push 를 해봅시다. 아까 저장소를 서로 연결했기 때문에 push 만 넣어도 됩니다.

햔재 .git\refs\remotes\origin\master 의 파일만 변화하였습니다. 이는 원격 저장소 파일이며 아까 push 를 하였기 때문에 로컬 저장소에서 commit 한 내용이 담겨져 있는것을 확인 할 수 있습니다.

즉 이제 지역저장소의 master 와 원격저장소의 origin 이 같은 commit 를 가르킵니다.

이번시간에는 원격 저장소의 원리에 대해 알아봤습니다.

여기까지 하도록 하겠습니다.

profile
울산대학교 IT융합학부 22학번

0개의 댓글