Qual é a diferença entre git clone e checkout?


Respostas:


337

A página de manual do checkout: http://git-scm.com/docs/git-checkout

A página de manual do clone: http://git-scm.com/docs/git-clone

Para resumir, clone é para buscar repositórios que você não possui, o checkout é para alternar entre ramificações em um repositório que você já possui.

Nota: para aqueles que têm um histórico de SVN / CVS e são novos no Git, o equivalente git cloneem SVN / CVS é checkout. A mesma formulação de termos diferentes é frequentemente confusa.


41
checkouttambém pode ser usado para outras coisas, como sobrescrever um arquivo na sua cópia de trabalho por uma versão desse arquivo de outra revisão.
— svick

8
e quando você usa "pull" vs "checkout"?
— Kokodoko 25/05

27
pull é uma busca e mesclagem, o checkout é uma operação local que opera apenas com dados que já foram buscados. Portanto, não é como o svn checkout.
— August Lilleaas

13
Vindo do mundo SVN, eu também estava confuso. Uau .. que bagunça. Em um mundo ideal, eu aplicaria todos os fabricantes de sistemas de controle de origem a usar os mesmos termos.
— Zoltán Tamási

5
Fork é um termo do github e não está relacionado ao próprio git.
— August Lilleaas

123

O clone git é buscar seus repositórios no servidor git remoto.

O git checkout consiste em verificar o status desejado do seu repositório (como ramificações ou arquivos específicos).

Por exemplo, você está atualmente no ramo principal e deseja mudar para o ramo de desenvolvimento.

git checkout develop_branch

Por exemplo, você deseja fazer o checkout para um status específico de um arquivo específico

git checkout commit_point_A -- <filename>

Aqui está uma boa referência para você aprender Git, permite entender muito mais facilmente.


20
"do servidor git remoto" - não é necessário que o servidor seja remoto. git clonetambém trabalha com repositórios locais.
— SET

11
Obrigado pelo link para uma referência visual ao git!
— David Pointer

@ Ho Ho: O link é bom como referência, mas não ajuda muito alguém com perguntas básicas sobre o git como a pessoa acima. Como o próprio artigo diz: "Uma vez que você sabe um pouco sobre como funciona o git, este site pode solidificar sua compreensão"
— SN

Definições circulares não são tão úteis. A palavra "buscar" usada para descrever o clone é útil e acrescenta significado, mas a frase "checkout é checkout ..." não adiciona significado, nem ajuda a distinguir a diferença entre as duas operações.
— C Perkins

11

Uma coisa a notar é a falta de qualquer "cópia" no git. Isso ocorre porque você já tem uma cópia completa no seu repositório local - o seu repositório local é um clonedo seu repositório upstream escolhido. Portanto, você tem efetivamente um pessoal checkoutde tudo , sem colocar algum 'bloqueio' nesses arquivos no repositório de referência.

O Git fornece os valores de hash SHA1 como o mecanismo para verificar se a cópia que você possui de uma árvore de arquivos / diretórios / commit / repo é exatamente a mesma usada por quem é capaz de declarar as coisas como "Mestre" dentro da hierarquia de confiança. Isso evita todos os 'bloqueios' que causam o sufocamento da maioria dos sistemas SCM (com os problemas comuns de cópias particulares, grandes fusões e nenhum controle ou gerenciamento real do código-fonte ;-)!


4
A pergunta não menciona bloqueios e deve-se presumir por padrão nos dias de hoje que uma pessoa não está familiarizada com esse conceito; portanto, essas diferenças em relação aos VCS antigos devem ser explicadas apenas se solicitadas explicitamente.
— wRAR

6

Simplesmente git checkout tem 2 usos

  1. Alternando entre filiais locais existentes, como git checkout <existing_local_branch_name>
  2. Crie uma nova ramificação a partir da ramificação atual usando o sinalizador -b. Suponha que, se você estiver na ramificação principal, git checkout -b <new_feature_branch_name>crie uma nova ramificação com o conteúdo da ramificação principal e mude para a ramificação recém-criada

Você pode encontrar mais opções no site oficial


Agradável. Essa -bopção é incrível, o que cria uma nova ramificação local e a verifica ao mesmo tempo em um único comando. Amei!
— RBT

2

checkout pode ser usado para muitos casos:

1º caso : alternar entre ramificação no repositório local Por exemplo: git checkout exists_branch_to_switch

Você também pode criar uma nova ramificação e alternar neste caso com -b

git checkout -b new_branch_to_switch

2º caso : restaurar arquivo de x rev

git checkout rev file_to_restore ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.