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.