¿Cómo ignoro el siguiente mensaje de error en Git pull?
Los cambios locales en los siguientes archivos se sobrescribirán mediante fusión
¿Qué pasa si quiero sobrescribirlos?
He intentado cosas como git pull -f
, pero nada funciona.
Para ser claros, solo quiero sobrescribir cambios específicos, no todo.
git config core.fileMode false
salva mis tiemposRespuestas:
Si desea eliminar todos los cambios locales, incluidos los archivos que git no rastrea, de su copia de trabajo, simplemente guárdelos:
Si ya no los necesita, ahora puede soltar ese alijo:
Si no desea guardar los cambios que ya organizó, por ejemplo, con
git add
, agregue la opción--keep-index
. Sin embargo, tenga en cuenta que esto aún evitará la fusión si esos cambios en escena chocan con los de arriba.Si desea sobrescribir solo partes específicas de sus cambios locales, hay dos posibilidades:
Confirma todo lo que no quieras sobrescribir y utiliza el método anterior para el resto.
Úselo
git checkout path/to/file/to/revert
para los cambios que desea sobrescribir. Asegúrese de que el archivo no se organice por medio degit reset HEAD path/to/file/to/revert
.fuente
git checkout HEAD^ path/to/file/to/revert
. Usando HEAD ^ hizo toda la diferencia.save --keep-index
".Bien, con la ayuda de las otras dos respuestas, he encontrado una solución directa:
fuente
Esto funciona para mí para anular todos los cambios locales y no requiere una identidad:
fuente
Aquí hay una solución que descarta los cambios por etapas:
fuente
Puede confirmar sus cambios antes de fusionarlos o guardarlos:
git stash save
git merge origin/master
git stash pop
fuente
--autostash
opción solo está disponible con la--rebase
opción (Si desea descartar sus cambios locales en un archivo, puede hacer lo siguiente:
Entonces podría sobrescribir el archivo [s] con la última versión simplemente haciendo:
fuente
git reset HEAD~
y luego hacer elgit checkout
git checkout -- <file>
falla conerror: pathspec '<file>' did not match any file(s) known to git.
Si su repositorio contiene algunos archivos que se eliminan de
master
:git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
fuente
A veces, ninguno de estos funciona. Molesto, debido a lo de LF, creo, lo que funcionará es eliminar los archivos y luego tirar. No es que recomiende esta solución, pero si el archivo no existe, git no le informará inútilmente que sus cambios (que pueden no ser cambios) se anularán y le permitirán continuar.
Úselo bajo su propio riesgo.
fuente
git stash save --keep-index
no funcionó para míEl siguiente comando funcionó como se esperaba.
Anula todos los cambios locales si no los necesita.
fuente
Tantas respuestas aquí que odio agregar otra más, pero todas las anteriores son más complicadas de lo que deberían ser. Tengo que hacer esto todo el tiempo, ya que Git parece confundirse y dice que he modificado los archivos que no han cambiado (no se puede revertir porque no cambiaron, pero no puedo extraerlo porque supuestamente han cambiado). Lo más rápido que he encontrado hasta ahora es:
fuente
En el Git reciente, puede agregar
-r
/ activar--rebase
elpull
comando para volver a basar su rama actual en la parte superior de la rama ascendente después de la recuperación. La advertencia debería desaparecer, pero existe el riesgo de que surjan algunos conflictos que deberá resolver.Alternativamente, puede pagar diferentes ramas con fuerza, luego volver a
master
, por ejemplo:Luego tire de nuevo como de costumbre:
El uso de este método puede ahorrarle tiempo de almacenamiento (
git stash
) y posibles problemas de permisos, restablecimiento de archivos (git reset HEAD --hard
), eliminación de archivos (git clean -fd
), etc. Además, lo anterior es más fácil de recordar.fuente
Este problema se debe a que ha realizado cambios localmente en el / los archivo / s y existe el mismo archivo / s con cambios en el repositorio de Git, por lo que antes de extraer / insertar necesitará guardar los cambios locales:
Para sobrescribir cambios locales de un solo archivo:
Para sobrescribir todos los cambios locales (cambios en todos los archivos):
Además, este problema puede deberse a que está en una rama que no está fusionada con la rama maestra.
fuente
git reset --hard && git clean -df
Precaución : esto restablecerá y eliminará los archivos no rastreados.
fuente
Puede usar esto para sobrescribir el archivo
fuente
La mejor manera de resolver este problema es:
Después de eso, puede sobrescribir el archivo:
fuente
git checkout -- path/*
solo una vez, y me permitió ejecutar el pull después.Esto funcionó para mí para descartar cambios en el servidor remoto en vivo y extraer del control de origen GitHub:
fuente
Aquí está mi estrategia para resolver el problema.
Planteamiento del problema
Necesitamos hacer cambios en más de 10 archivos. Lo intentamos
PULL (git pull origin master)
, pero Git gritó:Intentamos ejecutar
commit
y luegopull
, pero tampoco funcionaron.Solución
En realidad, estábamos en la etapa sucia , porque los archivos estaban en el "Área de ensayo", también conocido como "Área de índice", y algunos estaban en el "Área de cabecera", también conocido como "directorio Git local". Y queríamos sacar los cambios del servidor.
Consulte este enlace para obtener información sobre las diferentes etapas de Git de manera clara: Etapas de GIT
Seguimos los siguientes pasos
git stash
(esto limpió nuestro directorio de trabajo. Git almacena sus cambios en la pila).git pull origin master
(Extraiga los cambios del servidor)git stash apply
(Aplica todos los cambios de la pila)git commit -m 'message'
(Cometió los cambios)git push origin master
(Empujó los cambios al servidor)git stash drop
(Suelta la pila)Comprendamos cuándo y por qué necesita esconderse
Si está en estado sucio , significa que está haciendo cambios en sus archivos y luego, por cualquier motivo, se ve obligado a retirar o cambiar a otra sucursal para realizar un trabajo muy urgente, por lo que en este momento no puede extraer o cambia hasta que confirmes tu cambio. El
stash
comando está aquí como una mano amiga.Del libro ProGIT , 2da Edición:
fuente
Si desea sobrescribir cambios específicos, necesita alguna forma de decirle cuáles desea olvidar.
Puede intentar guardar selectivamente los cambios que desea abandonar usando
git stash --patch
y luego soltar ese alijo congit stash drop
. A continuación, puede realizar los cambios remotos y fusionarlos de manera normal.fuente
TL; DR;
No sé por qué esto aún no se responde, pero la solución, como puede ver, es simple. Todas las respuestas aquí sugieren lo mismo: para eliminar / guardar sus cambios locales y aplicarlos en sentido ascendente, luego (si lo hace
save
) aplique sus cambios locales en la parte superior.Qué
git pull --rebase --autostash
hace paso a paso:Mi caso (probablemente el tuyo también):
Tengo cambios locales (cambios en el directorio de trabajo):
Cuando intento extraer cambios remotos, aparece un error:
Estos cambios no se cruzan con los cambios locales:
Entonces, cuando
pull --rebase --autostash
los cambios locales se guardan y aplican sin ningún problema automáticamenteAhora mis cambios locales son un poco más bajos:
fuente
Tuve un caso especial de esto: tenía un archivo con --asumir- sin cambios en él. Fue difícil de localizar, ya que el
git status
comando no mostraba ningún cambiofuente
Si desea mantener los cambios de producción en el servidor, simplemente fusione en un nuevo elemento de configuración. El método de procesamiento es el siguiente:
Quizás no ejecutes todas las operaciones. Puedes saber lo que puedes hacer a continuación.
fuente
Estaba ignorando un archivo en mi repositorio y cuando lo hice
git pull upstream master
, recibí el siguiente error:Para resolverlo hice lo siguiente
Entonces lo hice
git status
y recibí este mensajeLuego lo
git checkout myfile.js
seguígit pull upstream master
. Esta vez la operación git pull fue exitosa.fuente
Encontré esto cuando tiraba del maestro.
La forma en que lo manejé, usando Visual Studio;
¡Espero que esto ayude!
fuente
La solución más simple es:
fuente
Soy nuevo en git y no estoy seguro de si mi solución es una buena idea.
¡He probado TODAS las respuestas y ninguna de ellas funcionó para mí!
Pero encontré otra solución:
Espero que esto ayude.
fuente
El error "Sus cambios locales en los siguientes archivos se sobrescribirán por fusión" se produce porque tiene algunos cambios en el repositorio local que NO se han confirmado todavía, por lo que antes de extraerlo del repositorio remoto, simplemente confirme los cambios en el repositorio local.
Digamos que su repositorio remoto tiene alguna rama xyz y desea que esa rama remota de repositorio xyz se fusione con (se copie) en la sucursal local de repositorio xyz, entonces,
fuente
Si este error se debe a finales de línea,
trabajará. No estoy realmente seguro de por qué funciona.
fuente
Para Pycharm, puedes hacer Git -> Revertir y luego tirar.
fuente
Este mensaje también puede aparecer si
git-lfs
se usa y un puntero de archivo fue sobrescrito por un archivo real.entonces usas:
salida completa de mi caso
ver https://github.com/git-lfs/git-lfs/issues/2839
fuente
Lo he intentado y con éxito, antes de tirar, permite confirmar todos los archivos que no has confirmado, entonces no recibirás esos mensajes de AS.
fuente