¿Cuál es la diferencia entre git clone y checkout?


¿Cuál es la diferencia entre git clone y git checkout?

 277
Author: Michael Currie, 2011-09-04

5 answers

La página de manual para checkout: http://git-scm.com/docs/git-checkout

La página de manual para clon: http://git-scm.com/docs/git-clone

En resumen, clone es para obtener repositorios que no tiene, checkout es para cambiar entre ramas en un repositorio que ya tiene.

Nota: para aquellos que tienen un fondo SVN/CVS y son nuevos en Git, el equivalente de git clone en SVN/CVS es checkout. La misma redacción de diferentes términos es a menudo confusa.

 272
Author: August Lilleaas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-27 09:36:19

Git clone es recuperar tus repositorios desde el servidor git remoto.

Git checkout es revisar el estado deseado de tu repositorio (como ramas o archivos particulares).

Por ejemplo, usted está actualmente en la rama master y desea cambiar a la rama develop.

git checkout develop_branch

Por ejemplo, desea obtener un estado particular de un archivo en particular

git checkout commit_point_A -- <filename>

Aquí hay una buena referencia para que aprendas Git, te permite entender mucho más fácilmente.

 115
Author: Kit Ho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-07 00:17:33

Una cosa a notar es la falta de cualquier "Copyout" dentro de git. Esto se debe a que ya tiene una copia completa en su repositorio local - su repositorio local es un clone de su repositorio upstream elegido. Así que tienes efectivamente un checkout personal de todo, sin poner algún 'bloqueo' en esos archivos en el repositorio de referencia.

Git proporciona los valores hash SHA1 como mecanismo para verificar que la copia que tienes de un archivo / árbol de directorios / commit / repo es exactamente la misma como la utilizada por quien es capaz de declarar las cosas como "Maestro" dentro de la jerarquía de la confianza. Esto evita todos esos 'bloqueos' que causan que la mayoría de los sistemas SCM se bloqueen (con los problemas habituales de copias privadas, grandes fusiones, y ningún control o gestión real del código fuente ;-) !

 11
Author: Philip Oakley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-04 13:05:39

Simplemente git checkout tiene 2 usos

  1. Cambiar entre ramas locales existentes como git checkout <existing_local_branch_name>
  2. Crea una nueva rama desde la rama actual usando flag-b. Supongamos que si estás en la rama master entonces git checkout -b <new_feature_branch_name> creará una nueva rama con el contenido de master y cambiará a la rama recién creada

Puedes encontrar más opciones en el sitio oficial

 4
Author: Khader M A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-27 12:52:14

checkout puede ser utilizado para muchos casos:

1st case : cambiar entre rama en repositorio local Por ejemplo : git checkout exists_branch_to_switch

También puede crear una nueva rama y cambiar a través de este caso con -b

git checkout -b new_branch_to_switch

2do caso : restaurar archivo desde x rev

git checkout rev file_to_restore ...

 2
Author: Goms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-05 18:11:27