git push를 통하여 원격 저장소에서 코드를 보관했다면, 이번에는 원격 저장소에 저장된 코드를 가져오는 방법에 대해 알아보도록 하겠습니다.
git clone
git clone 명령어는 원격 저장소로부터 프로젝트를 복제하는 명령어입니다. git clone을 사용하면 원격 저장소의 모든 파일과 히스토리를 로컬로 가져와 작업할 수 있도록 합니다. git clone 명령어를 사용하는 방법은 다음과 같습니다.
- git clone을 사용하기 전 먼저 가져오고자 하는 원격 Repository로 접속합니다.
- "<> Code" 라고 적힌 초록색 버튼을 클릭한 후, "https://~~" 원격 저장소 주소를 복사합니다.
- 자신이 작업을 수행하고자 하는 로컬 폴더로 돌아가 git clone 명령어를 수행합니다.
# 원격 저장소에서 로컬 작업환경으로 프로젝트 clone 하기
git clone 원격저장소주소
그렇게 clone 작업을 완료하면, 자신의 로컬 환경에서 작업하고 커밋하고 푸쉬가 가능합니다. (다만, 타인과 협업의 경우에는 같이 협업하는 사람이 자신의 깃허브 아이디가 있어야 하며, Collaborators에 협업자로 등록이 되어있어야 합니다.)
git pull
로컬 환경에서 작업을 마치고 커밋을 한 후, git push를 이용하여 원격 저장소로 푸쉬를 할 때 사용합니다. 그런데 푸쉬하기 전에 이미 원격 저장소에 다른 변경사항이 생겼다면 푸쉬를 해도 거절(Reject)됩니다. 즉, 원격과 로컬의 내용이 다르면 git push가 되지 않습니다.
이를 해결하기 위해서는 먼저 원격 저장소의 내용을 가져와야 합니다. 이때 사용하는 명령어가 바로 git pull입니다. git pull을 사용하면 원격 저장소에 있는 모든 내용을 가져와 로컬의 작업 내용과 합칩니다. git pull 명령어의 사용 방법은 다음과 같습니다.
# 원격 저장소의 변경 내역을 모두 로컬로 가져와 합친다
git pull 원격저장소주소
원격 저장소와 로컬 작업 환경이 기본적으로 연결되어있다면 git pull 명령어만으로도 pull 작업이 가능합니다. 또한 git push 때와 마찬가지로 origin과 같은 일종의 변수 문법을 사용할 수 있고 -u 옵션을 사용했었다면 git pull만 사용할 수 있습니다.
git pull의 기능을 조금 더 자세히 알아보면 다음과 같습니다.
- 원격 저장소에서 최신 변경 사항을 로컬로 가져오기: 'git fetch' 명령어를 사용하여 다음의 작업을 수행할 수 있습니다.
- 로컬 브랜치에 병합하기: 'git merge' 명령어를 사용하여 다음의 작업을 수행할 수 있습니다.
즉, git pull은 git fetch와 git merge 명령어를 하나로 합친 축약된 명령어입니다. git pull은 git merge의 작업을 수행하는 것이기에 pull 과정 도중 "충돌(Merge Conflict)"이 일어날 수 있습니다. 충돌이 일어날 경우, 병합하는 여러 방법(3-way Merge, Fast-Forward Merge, Rebase, Squash..)을 사용하여 충돌을 해결하면 됩니다.