답변:
git clone
작업 할 기존 저장소의 로컬 사본을 얻는 방법입니다. 여러 개의 작업 사본을 갖고 싶지 않은 경우 일반적으로 주어진 저장소에 대해 한 번만 사용됩니다. (또는 로컬 사본을 엉망으로 만든 후 깨끗한 사본을 얻으려고합니다 ...)
git pull
(또는 git fetch
+ git merge
)는 원격 저장소에서 새로운 커밋으로 해당 로컬 복사본 을 업데이트 하는 방법 입니다. 다른 사람과 공동 작업하는 경우 자주 실행하는 명령입니다.
첫 번째 예제에서 알 수 있듯이 git clone
다른 git 명령을 사용 하여 에뮬레이션 할 수는 있지만 실제로 git pull
"기본적으로 동일한 작업"을 수행 하는 경우는 아닙니다 git clone
.
평신도 언어로 말할 수 있습니다.
미스 클론 : 지역에 새로운 사본을받습니다.
Mr Pull : 이미 로컬에 설치했으며 업데이트 만합니다.
미스 클론 : 당신이하는 일을 할 수 있습니다! 당신은 내 하위 집합입니다.
미스터 풀 : 디토!
미스 클론 : 아니요, 생성하지 않습니다. 이것이 제가하는 것입니다:
당신은 # 3 만하고 병합 할 필요가 없습니다 (광산은 신선합니다).
Mr Pull : Smarty 바지, 별거 아니에요, 먼저 "git init"을하겠습니다! 그런 다음 우리는 동일합니다. 또한 기존 리포지토리에 추가 '병합'기능이 있습니다! Git에서 가장 많이 사용되는 명령은 무엇입니까?)
Git creators : --Bare 또는 --mirror를 clone 또는 init과 함께 사용하는 경우 말 풀을 잡으십시오. 병합이 발생하지 않습니다. 읽기 전용으로 남아 있습니다.
흠, 복제 할 때와 같이 당기면 원격 분기 "4.2"가 보이지 않는 것은 무엇입니까? 분명히 동일하지 않습니다.
tmp$ mkdir some_repo
tmp$ cd some_repo
some_repo$ git init
Initialized empty Git repository in /tmp/some_repo/.git/
some_repo$ git pull https://github.ourplace.net/babelfish/some_repo.git
:
From https://github.ourplace.net/babelfish/some_repo
* branch HEAD -> FETCH_HEAD
some_repo$ git branch
* master
vs
tmp$ rm -rf some_repo
tmp$ git clone https://github.ourplace.net/babelfish/some_repo.git
Cloning into 'some_repo'...
:
Checking connectivity... done.
tmp$ cd some_repo
some_repo$ git branch
* 4.2
이 git fetch
명령은 아직 서버에없는 모든 변경 사항을 가져 오지만 작업 디렉토리는 전혀 수정하지 않습니다. 단순히 데이터를 가져 와서 직접 병합 할 수 있습니다. 그러나 대부분의 경우 git pull
기본적으로 git fetch
바로 뒤에 나오는 명령 이 git merge
있습니다.
더 읽기 : https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling
복제 -: 로컬 시스템에서 원격 저장소 프로젝트의 사본을 정확하게 복제합니다.
풀 -: 두 사람 이상이 동일한 저장소를 공유한다고 가정하십시오. (다른 사람 이름을 Syam이라고 지정하십시오. (리포지토리는 프로젝트가 Github에 존재하는 장소입니다.) Syam가 로컬에서 동일한 프로젝트에서 일부 변경을 수행하고 원격 저장소로 푸시하면 Syam가 변경 한 내용이 무엇이든 귀하의 지역에 반영하지 마십시오. 따라서 로컬에서 이러한 새로운 변경 사항을 반영하려면 git pull을 사용해야합니다. 전반적으로 우리는 git pull을 사용하여 프로젝트를 업데이트합니다.
따라서 기본적으로 git clone을 한 번만 사용하지만 git pull을 여러 번 사용합니다.