git fetch (Español)

git fetch (Español)

el comandogit fetch descarga confirmaciones, archivos y referencias de un repositorio remoto en su repositorio local. Ir a buscar es lo que haces cuando quieres ver en lo que todos los demás han estado trabajando. Es similar a svn update en que te permite ver cómo ha progresado el historial central, pero no te obliga a fusionar los cambios en tu repositorio. Git aísla el contenido obtenido del contenido local existente; no tiene absolutamente ningún efecto en su trabajo de desarrollo local., El contenido obtenido debe ser comprobado explícitamente usando el comando git checkout. Esto hace que obtener una forma segura de revisar las confirmaciones antes de integrarlas con su repositorio local.

al descargar contenido de un repositorio remoto, los comandos git pull y git fetch están disponibles para realizar la tarea. Puede considerar git fetch la versión ‘segura’ de los dos comandos. Descargará el contenido remoto pero no actualizará el estado de trabajo de su repositorio local, dejando su trabajo actual intacto., git pulles la alternativa más agresiva; descargará el contenido remoto para la rama local activa e inmediatamente ejecutará git merge para crear una confirmación de fusión para el nuevo contenido remoto. Si tiene cambios pendientes en curso, esto causará conflictos y pondrá en marcha el flujo de resolución de conflictos de fusión.

cómo funciona git fetch con ramas remotas

para comprender mejor cómo funciona git fetch, analicemos cómo organiza y almacena git las confirmaciones., Entre bastidores, en el directorio ./.git/objects del repositorio, Git almacena todas las confirmaciones, locales y remotas. Git mantiene las confirmaciones de rama remotas y locales claramente separadas mediante el uso de referencias de rama. Las referencias de las ramas locales se almacenan en el ./.git/refs/heads/. Ejecutar el comando git branch generará una lista de las referencias de la rama local. El siguiente es un ejemplo de salida git branch con algunos nombres de rama de demostración.,

git branch
master
feature1
debug2

Examinar el contenido de la etiqueta /.git/refs/heads/ directorio revelaría una salida similar.

ls ./.git/refs/heads/
master
feature1
debug2

las ramas remotas son como las ramas locales, excepto que se asignan a confirmaciones del repositorio de otra persona. Las ramas remotas tienen el prefijo del remoto al que pertenecen para que no las mezcles con ramas locales. Al igual que las ramas locales, Git también tiene referencias para las ramas remotas. Las referencias de rama remota viven en el directorio ./.git/refs/remotes/., El siguiente fragmento de código de ejemplo muestra las ramas que podría ver después de obtener un repositorio remoto convenientemente llamado remote-repo:

git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature

esta salida muestra las ramas locales que habíamos examinado anteriormente, pero ahora las muestra con el prefijo origin/. Además, ahora vemos las ramas remotas con el prefijo remote-repo. Puedes revisar una rama remota igual que una local, pero esto te pone en un estado separado HEAD (igual que revisar una confirmación Antigua). Puedes pensar en ellas como ramas de solo lectura., Para ver sus ramas remotas, simplemente pase la bandera -r al comando git branch.

Usted puede inspeccionar ramas remotas con la habitual git checkout y git log comandos. Si aprueba los cambios que contiene una rama remota, puede fusionarla en una rama local con un git mergenormal. Por lo tanto, a diferencia de SVN, sincronizar su repositorio local con un repositorio remoto es en realidad un proceso de dos pasos: fetch, luego merge. El comando git pull es un atajo conveniente para este proceso.,

Git fetch comandos y opciones

git fetch <remote>

Obtener todas las ramas del repositorio. Esto también Descarga todas las confirmaciones y archivos requeridos del otro repositorio.

git fetch <remote> <branch>

Mismo que el comando anterior, pero sólo recuperar la bifurcación especificada.

git fetch --all

un movimiento de potencia que obtiene todos los controles remotos registrados y sus ramas:

git fetch --dry-run

la opción --dry-run realizará una ejecución de demostración del comando., Mostrará ejemplos de acciones que tomará durante la búsqueda pero no las aplicará.

git fetch a remote branch

el siguiente ejemplo mostrará cómo obtener una rama remota y actualizar su estado de trabajo local al contenido remoto. En este ejemplo, supongamos que hay un origen de repositorio central desde el cual se ha clonado el repositorio local usando el comando git clone. Supongamos también un repositorio remoto adicional llamado coworkers_repo que contiene un feature_branch que configuraremos y recuperaremos., Con estos supuestos establecidos continuemos el ejemplo.

primero tendremos que configurar el repositorio remoto usando el comando git remote.

git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git

Aquí hemos creado una referencia al repositorio del compañero de trabajo usando la URL del repositorio. Ahora pasaremos ese nombre remoto a git fetch para descargar el contenido.

git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch

ahora tenemos localmente el contenido de coworkers/feature_branch necesitaremos integrarlo en nuestra copia local de trabajo., Comenzamos este proceso usando el comando git checkout para obtener la rama remota recién descargada.

git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>

El resultado de dicha comprobación de la operación indica que estamos en un desprendimiento de HEAD estado. Esto es esperado y significa que nuestro HEAD ref está apuntando a un ref que no está en secuencia con nuestra historia local. Siendo que HEAD está apuntado a la referencia de coworkers/feature_branch, podemos crear una nueva rama local a partir de esa referencia., El ‘separado HEAD‘ salida nos muestra cómo hacer esto utilizando la etiqueta git checkout comandos:

git checkout -b local_feature_branch

Aquí hemos creado una nueva rama local llamado local_feature_branch. Esto pone las actualizaciones HEAD para apuntar al último contenido remoto y podemos continuar el desarrollo sobre él desde este punto.

sincronizar origen con git fetch

el siguiente ejemplo recorre el flujo de trabajo típico para sincronizar su repositorio local con la rama maestra del repositorio central.,

git fetch origin

esto mostrará las ramas que se descargaron:

Las confirmaciones de estas nuevas ramas remotas se muestran como cuadrados en lugar de círculos en el diagrama de abajo. Como puede ver, git fetch le da acceso a toda la estructura de ramas de otro repositorio.,

para ver qué confirmaciones se han agregado al maestro de origen, puede ejecutar un git log usando origin/master como filtro:

git log --oneline master..origin/master

para aprobar los cambios y combinarlos en su rama maestra local, use el los siguientes comandos:

git checkout master
git log origin/master

entonces podemos usar git merge origin/master:

git merge origin/master

las ramas origin / master y Master ahora apuntan a la misma confirmación, y se sincroniza con los desarrollos upstream.,

git fetch summary

en la revisión, git fetch es un comando principal utilizado para descargar contenidos de un repositorio remoto. git fetch se utiliza en conjunción con la etiqueta git remote, git branch, git checkout y git reset actualizar un repositorio local para el estado de un control remoto. El comando git fetch es una pieza crítica de los flujos de trabajo colaborativos de git., git fetch has similar behavior to git pull, however, git fetch can be considered a safer, nondestructive version.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *