remota rama origin example ejemplo comandos cambiar and git git-pull

rama - git pull origin master



¿Cómo fuerzo a Git Pull para sobrescribir todo en cada extracción? (7)

No estoy seguro de cómo hacerlo en un comando, pero podrías hacer algo como:

git reset --hard git pull

o incluso

git stash git pull

Tengo un repositorio desnudo CENTRAL que tiene tres repositorios de desarrolladores tirando de él y empujándolo normalmente.

También tengo otros dos repositorios que extraen del repositorio central CENTRAL: uno es el servidor en vivo, y el otro es un servidor de prueba / etapa, cada uno extrayendo de su propia rama respectiva.

El escenario es el siguiente: Tengo un script de gancho post-update en el repositorio CENTRAL que automáticamente accede a la prueba y repos en vivo y ejecuta un comando de extracción en cada uno. Esto actualiza los servidores de prueba y en vivo, todo depende de qué rama tenga nuevas confirmaciones. Todo esto funciona genial

El problema es este: puede haber momentos en una emergencia en que los archivos se puedan actualizar directamente en el servidor (a través de ftp o lo que sea) y el script CENTRAL posterior a la actualización fallará dado que se producirán conflictos de fusión / sobrescritura. No hay forma de evitar este escenario, y es inevitable.

Lo que me gustaría que sucediera es esto: quiero que la extracción de los sitios en vivo y de prueba siempre sobrescriba / se fusione. Siempre. Estos repos serán pull-only ya que no son para desarrollo.

En toda mi investigación, no puedo encontrar una buena solución para tener un tirón siempre forzar una sobreescritura de los archivos locales. ¿Es esto posible? Sería un gran escenario de desarrollo si es así.


Para extraer una copia de la rama y forzar la sobrescritura de los archivos locales desde el origen, utilice:

git reset --hard origin/current_branch

Todo el trabajo actual se perderá y será el mismo que el de origen


Puede cambiar el gancho para limpiar todo.

# Danger! Wipes local data! # Remove all local changes to tracked files git reset --hard HEAD # Remove all untracked files and directories git clean -dfx git pull ...



Realmente, la forma ideal de hacerlo es no usar pull en absoluto, sino fetch y reset :

git fetch origin master git reset --hard FETCH_HEAD git clean -df

(Alteración del master a cualquier rama que desee seguir).

pull está diseñado para fusionar los cambios de alguna manera, mientras que el reset está diseñado simplemente haciendo que su copia local coincida con una confirmación específica.

Es posible que desee considerar opciones ligeramente diferentes para clean según las necesidades de su sistema.


Si aún no ha confirmado los cambios locales desde la última extracción / clonación, puede usar:

git checkout * git pull

checkout borrará tus cambios locales con la última confirmación local, y pull sincronizará el archivo en el repositorio remoto


git reset --hard HEAD git fetch --all git reset --hard origin/your_branch