git clone과 checkout의 차이점은 무엇입니까?


답변:


337

결제 매뉴얼 페이지 : http://git-scm.com/docs/git-checkout

클론 매뉴얼 페이지 : http://git-scm.com/docs/git-clone

요약하자면 클론은 가지고 있지 않은 리포지토리를 가져오고, 체크 아웃은 이미 가지고있는 리포지토리의 분 기간을 전환하는 것입니다.

참고 : 망할 놈의 동등한에 SVN / CVS 배경과 새로운 사람들을 위해 git cloneSVN의를 / CVS이다 checkout. 다른 용어의 동일한 표현은 종종 혼동됩니다.


41
checkout작업 복사본의 파일을 다른 버전의 해당 파일 버전으로 덮어 쓰는 등 다른 작업에도 사용할 수 있습니다.
svick

8
"pull"과 "checkout"은 언제 사용합니까?
Kokodoko

27
pull은 페치 및 병합이며, checkout은 이미 페치 된 데이터에서만 작동하는 로컬 작업입니다. 따라서 svn checkout과 전혀 다릅니다.
August Lilleaas

13
SVN 세계에서 왔을 때도 혼란 스러웠습니다. 와우 .. 엉망이야 이상적인 세계에서는 모든 소스 제어 시스템 제조업체가 동일한 용어를 사용하도록 강요합니다.
Zoltán Tamási

5
포크는 github 용어이며 git 자체와 관련이 없습니다.
August Lilleaas

123

git clone 은 원격 git 서버에서 리포지토리를 가져 오는 것입니다.

git checkout 은 브랜치 또는 특정 파일과 같은 원하는 저장소 상태를 체크 아웃하는 것입니다.

예를 들어, 현재 마스터 지점에 있으며 개발 지점으로 전환하려고합니다.

git checkout develop_branch

예를 들어, 특정 파일의 특정 상태를 체크 아웃하려는 경우

git checkout commit_point_A -- <filename>

다음은 Git을 배울 수 있는 좋은 참고 자료 입니다. 훨씬 쉽게 이해할 수 있습니다.


20
"원격 자식 서버에서"-서버가 원격 일 필요는 없습니다. git clone로컬 저장소와 함께 작동합니다.
SET

1
git에 대한 시각적 참조에 대한 링크에 감사드립니다!
David Pointer

@Kit Ho :이 링크는 참고 용으로 좋지만 위 사람과 같은 git에 대한 기본적인 질문이있는 사람에게는 큰 도움이되지 않습니다. 기사 자체에서 말했듯이 "git의 작동 방식에 대해 조금 알고 나면이 사이트가 이해를 굳힐 수 있습니다"
SN

원형 정의는 그다지 도움이되지 않습니다. 클론을 설명하는 데 사용되는 "fetch"라는 단어는 유용하고 의미를 추가하지만 "checkout is to checkout ..."이라는 문구는 의미를 추가하지 않으며 실제로 두 작업의 차이점을 구별하는 데 도움이되지도 않습니다.
C 퍼킨스

11

주목해야 할 것은 git 내에 "Copyout"이 없다는 것입니다. 로컬 리포지토리에 이미 전체 사본 이 있기 때문입니다. 로컬 리포지는 clone선택한 업스트림 리포지토리 중 하나입니다. 그래서 당신은 효과적으로 개인이 checkout모든 기준의 repo에서 이러한 파일에 대한 몇 가지 '잠금'을주지 않고.

Git은 SHA1 해시 값을 파일 / 디렉토리 트리 / 커밋 / 리포지토리의 복사본이 트러스트 계층 내에서 "마스터"로 선언 할 수있는 사람이 사용하는 사본과 정확히 동일한 지 확인하는 메커니즘으로 제공합니다. 이렇게하면 대부분의 SCM 시스템이 질식하게 만드는 모든 '잠금'을 피할 수 있습니다.


4
이 질문에는 잠금에 대한 언급이 없으며 요즘 기본적으로 사람 이이 개념에 익숙하지 않다고 가정해야하므로 이전 VCS와의 차이점은 명시 적으로 요청해야합니다.
wRAR

6

간단히 git checkout에는 2 가지 용도가 있습니다.

  1. 다음과 같은 기존 로컬 지점 간 전환 git checkout <existing_local_branch_name>
  2. 플래그 -b를 사용하여 현재 브랜치에서 새 브랜치를 작성하십시오. 마스터 브랜치에 있다고 가정하면 master git checkout -b <new_feature_branch_name>의 내용으로 새 브랜치를 작성하고 새로 작성된 브랜치로 전환 한다고 가정하십시오.

공식 사이트 에서 더 많은 옵션을 찾을 수 있습니다


좋은. 이 -b옵션은 새 로컬 브랜치를 생성하고 단일 명령으로 동시에 체크 아웃하는 것이 좋습니다. 그것을 사랑!
RBT

2

checkout 많은 경우에 사용될 수 있습니다 :

첫 번째 경우 : 로컬 리포지토리의 분기 간 전환 예 : git checkout exists_branch_to_switch

새 분기를 만들고이 경우를 통해 전환 할 수도 있습니다 -b

git checkout -b new_branch_to_switch

두 번째 경우 : x rev에서 파일 복원

git checkout rev file_to_restore ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.