HOWTO · Git

Diferencia entre Git Checkout y Git Clone

Diferenciar entre los comandos git checkout y git clone.

En esta página

git clone copia un repositorio remoto en un nuevo repositorio local. git checkout funciona dentro de un repositorio que ya tienes: históricamente, permite cambiar de rama o restaurar archivos. Quienes usan SVN quizá reconozcan svn checkout como la operación para obtener una copia de trabajo, pero en Git esa tarea se realiza con git clone.

Cómo crea git clone un repositorio local

Usa git clone con la URL de un repositorio. Git crea un repositorio local y selecciona su rama predeterminada; clonar resulta útil cada vez que necesitas otra copia local, no solo la primera vez que trabajas en un proyecto.

Este ejemplo independiente crea un repositorio local de origen, lo clona y crea una rama de funcionalidad. La secuencia de comandos muestra un mensaje de confirmación en inglés después de cambiar a la nueva rama.

set -eu
workdir=$(mktemp -d)
trap 'rm -rf "$workdir"' EXIT

git init -q "$workdir/source"
git -C "$workdir/source" config user.name "Example User"
git -C "$workdir/source" config user.email "example@example.com"
printf 'Project notes\n' > "$workdir/source/README.md"
git -C "$workdir/source" add README.md
git -C "$workdir/source" commit -qm "Add project notes"
git clone -q "$workdir/source" "$workdir/local"
git -C "$workdir/local" switch -q -c feature
printf 'Created a local clone and switched to feature.\n'
Created a local clone and switched to feature.

Para un repositorio alojado en un servicio, copia su URL HTTPS o SSH y úsala con git clone <repository-url>. De forma predeterminada, el directorio de destino recibe un nombre basado en la URL del repositorio; añade un nombre de directorio después de la URL para elegir otra ubicación. La URL es la diferencia clave: este comando crea un repositorio a partir de una fuente remota.

Qué hace git checkout

Históricamente, git checkout se ha usado tanto para operaciones con ramas como para restaurar archivos. Son tareas distintas; por eso, las versiones más recientes de Git ofrecen los comandos más claros git switch y git restore. Su disponibilidad depende de la versión de Git instalada; si alguno de esos comandos no está disponible, usa la forma correspondiente de checkout.

Para crear una rama y cambiar a ella, usa git switch -c <branch-name>; la forma histórica es git checkout -b <branch-name>. Para cambiar a una rama existente, usa git switch <branch-name> o git checkout <branch-name>. Sustituye el marcador por una rama que exista en tu repositorio; el nombre de la rama predeterminada varía según el proyecto.

Para descartar cambios sin confirmar en un archivo bajo seguimiento, git restore <file> restaura su contenido desde el índice. Conserva los cambios preparados para confirmar, pero descarta los cambios sin preparar del archivo. La forma antigua equivalente es git checkout -- <file> y tiene el mismo comportamiento. Comprueba git status y guarda cualquier trabajo que quieras conservar antes de restaurar el archivo.

Cómo elegir el comando adecuado

  • ¿Tienes la URL de un repositorio remoto y necesitas un repositorio local? Usa git clone <repository-url>.
  • ¿Necesitas crear una rama o cambiar a otra en un repositorio existente? Usa git switch o la forma correspondiente de git checkout.
  • ¿Necesitas descartar cambios sin confirmar en un archivo bajo seguimiento? Usa git restore <file> o la forma antigua git checkout -- <file>.

En resumen, git clone obtiene un repositorio desde una URL remota. git checkout cambia la rama seleccionada o, en su forma antigua para archivos, restaura un archivo dentro de un repositorio existente; no crea un repositorio local a partir de una URL remota.