깃허브 저장소 내용 로컬 저장소로 내려받기

정민교·2023년 6월 5일
0

git

목록 보기
19/22
post-thumbnail

지금까지 원격 저장소를 clone하거나, 로컬 저장소의 변경 내용(커밋)을 원격 저장소로 업로드(push) 하는 것에 대해 알아봤고

그 기본 workflow에 대해 연습도 해보았습니다.

이번에 알아볼 내용은 원격 저장소 내용을 로컬 저장소로 내려받는 pullfetch 에 대해 알아보겠습니다.

원격 저장소와 로컬 저장소의 master 브랜치가 동일한 커밋을 가지고 있다고 가정합시다.

그런데 이 상태에서 로컬 master 에 작업한 후 하나의 커밋을 하였고,

원격 저장소에는 누군가 작업한 후 원격 master 에 3개의 커밋을 push 하였다고 가정합니다.

원격 저장소의 변경사항을 어떻게 가져올 수 있을까요?

✔️fetch

fetch 는 원격 저장소의 변경 사항을 가져오지만, working tree까지 통합하는 것이 아닌 local repo에만 변경 사항을 저장합니다.

git fetch <remote> <branch> #특정 브랜치의 최신 정보만 가져오기
git fetch <remote> #원격 저장소의 모든 최신 정보 가져오기

fetch 를 진행하면 origin master 브랜치의 변경사항을 가져올 수 있습니다.

하지만 working tree에 통합시키지는 않아서 현재 내 작업 영역에서 보이는 내용은 바뀌지 않습니다.

git checkout origin/master

위 명령어로 가져온 변경사항이 뭔지 확인해 볼 수 있습니다.

✔️pull

git pull <remote> <branch>

fetchpull 의 차이점은 working directory까지 가져온 변경사항을 통합하냐 하지 않느냐 입니다.

pull 은 가져온 변경사항을 working directory까지 통합시키며 HEAD의 위치까지 변경시킵니다.

git pull = git fetch + git merge 와 같습니다.

master 브랜치를 가정하겠습니다.

git fetch 를 진행하면 origin/master 의 변경 사항(커밋)을 로컬 저장소로 가져와 업데이트 합니다.

따라서 origin/mastermaster 간의 커밋에 차이가 발생하게 됩니다.

git pullorigin/mastermaster 에 병합하는 merge 작업까지 같이 합니다.

따라서 merge를 수행했다는 추가 커밋이 master 브랜치에 남게 될 것입니다.

그리고 pull 작업은 현재 내가 어떤 브랜치에 있던 간에 명령줄에 명시한 remote branch의 커밋을 현재 작업중인 브랜치에 병합합니다.

merge 작업을 같이 하기 때문에 항상 fast-forward-merge가 발생하는 것은 아닙니다.

충돌이 발생할 수 있으며(실제로는 꽤 자주) 앞에서 공부한 conflict 해결을 사용해서 충돌을 해결하면 됩니다.


🙏🙏🙏
git 시리즈에 작성한 포스팅은

https://www.udemy.com/course/best-git-github/
유데미 강좌
https://www.yes24.com/Product/Goods/110795446
모두의 깃 & 깃허브

위 내용을 참고하였으며, 제 실습화면을 캡쳐한 사진 외의

대부분의 사진들은 인터넷 강좌에서 제공하는 자료를 캡쳐하였습니다.

깃 시리즈 포스팅의 내용 및 사진을 절대로 상업적 목적으로 무단 복사하지 말아주세요.

또한 작성한 포스팅은 문제가 발생할 시 캡처 자료를 전부 삭제할 예정입니다.


profile
백엔드 개발자

0개의 댓글