siguientes - git pull origin master
¿Cómo ignorar un error en ''git pull'' sobre mis cambios locales que se sobrescribiría con la combinación? (25)
A veces, ninguno de estos funciona. Molestamente, debido a la cosa de LF que creo, lo que funcionará es eliminar los archivos y luego extraerlos. 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.
¿Cómo ignoro el siguiente mensaje de error en Git pull?
Sus cambios locales en los siguientes archivos se sobrescribirían mediante la combinació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.
Aquí está mi estrategia para resolver el problema.
Planteamiento del problema
Necesitamos hacer cambios en más de 10 archivos. Probamos PULL (git pull origin master)
, pero Git gritó:
error: Sus cambios locales en los siguientes archivos se sobrescribirían con la combinación: Confirme los cambios o guárdelos antes de que pueda combinarlos.
Intentamos ejecutar commit
y luego pull
, pero tampoco funcionaron.
Solución
Estábamos en la etapa sucia en realidad, porque los archivos se encontraban en el "Área de estacionamiento", también conocida como "Área de índice", y algunos estaban en el "Área principal", también conocido como "Directorio local de Git". Y queríamos sacar los cambios del servidor.
Consulte este enlace para obtener información sobre las diferentes etapas de Git de una manera clara: Etapas GIT
Seguimos los siguientes pasos.
-
git stash
(esto hizo que nuestro directorio de trabajo estuviera limpio. Sus cambios son almacenados en la pila por Git). -
git pull origin master
(Extraiga los cambios del servidor) -
git stash apply
(Segit stash apply
todos los cambios de la pila) -
git commit -m ''message''
(Confirmó los cambios) -
git push origin master
(empujó los cambios al servidor) -
git stash drop
(Drop the stack)
Entendamos cuándo y por qué necesitas escondite.
Si está en el 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 cometas tu cambio. El comando de stash
está aquí como una mano amiga.
Del libro ProGIT , 2ª Edición:
A menudo, cuando has estado trabajando en parte de tu proyecto, las cosas están en un estado desordenado y quieres cambiar de rama por un poco para que funcione en otra cosa. El problema es que no desea realizar un compromiso de trabajo a medio hacer solo para poder volver a este punto más adelante. La respuesta a este problema es el comando git stash. El ocultamiento toma el estado sucio de su directorio de trabajo, es decir, sus archivos modificados rastreados y los cambios programados, y lo guarda en una pila de cambios no finalizados que puede volver a aplicar en cualquier momento.
Aquí hay una solución que tira los cambios por etapas:
git reset file/to/overwrite
git checkout file/to/overwrite
Bien, con la ayuda de las otras dos respuestas, he encontrado una solución directa:
git checkout HEAD^ file/to/overwrite
git pull
En el Git reciente, puede agregar el comando -r
/ --rebase
on pull
para volver a poner su rama actual en la parte superior de la rama ascendente después de la recuperación. La advertencia debe desaparecer, pero existe el riesgo de que surjan algunos conflictos que deberá resolver.
Alternativamente, puede marcar diferentes ramas con fuerza, luego regresar al master
otra vez, por ejemplo:
git checkout origin/master -f
git checkout master -f
A continuación, tire de nuevo como de costumbre:
git pull origin master
Usar este método puede ahorrarle tiempo para esconder ( git stash
) y posibles problemas de permisos, restablecer archivos ( git reset HEAD --hard
), eliminar archivos ( git clean -fd
), etc. Además, lo anterior es más fácil de recordar.
Encontré esto cuando tiraba del maestro.
La forma en que lo manejé, usando Visual Studio;
- Primero, realicé Undo commit en mi solución.
- Luego hice el proceso de extracción de Git.
¡Espero que esto ayude!
Estaba ignorando un archivo en mi repositorio y cuando hice git pull upstream master
obtuve el siguiente error:
error: Sus cambios locales en los siguientes archivos se sobrescribirían con merge: myfile.js Por favor, confirme los cambios o guárdelos antes de que pueda combinarlos. Abortando
Para resolverlo hice lo siguiente.
git update-index --no-assume-unchanged myfile.js
Entonces hice git status
y recibí este mensaje.
En el maestro de sucursal Su sucursal está detrás de ''origen / maestro'' por 4 confirmaciones, y se puede avanzar rápidamente. (use "git pull" para actualizar su sucursal local)
Cambios no preparados para confirmación: (use "git add ..." para actualizar lo que se confirmará) (use "git checkout - ..." para descartar los cambios en el directorio de trabajo)
modificado: myfile.js
no se agregaron cambios a commit (use "git add" y / o "git commit -a")
Luego hice git checkout myfile.js
seguido de git pull upstream master
. Esta vez la operación git pull fue exitosa.
Este mensaje también puede ocurrir si se usa git-lfs
y un archivo real sobrescribe un puntero de archivo.
entonces usas:
git stash
git lfs migrate import
git pull
salida completa de mi caso
λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch ''feature/...'' into ''master''
Encountered 1 file(s) that should have been pointers, but weren''t:
public/apple-touch-icon.png
λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
public/apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting
λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done
λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
public/apple-touch-icon.png | Bin 2092 -> 130 bytes
public/favicon.ico | Bin 6518 -> 1150 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
Este problema se debe a que ha realizado cambios localmente en el / los archivo (s) y el mismo archivo / s existe con los cambios en el repositorio Git, por lo que antes de extraer / empujar necesitará cambios locales ocultos:
Para sobrescribir los cambios locales de un solo archivo:
git reset file/to/overwrite
git checkout file/to/overwrite
Para sobrescribir todos los cambios locales (cambios en todos los archivos):
git stash
git pull
git stash pop
Además, este problema puede deberse a que está en una rama que no está fusionada con la rama maestra.
Esto me sirve para anular todos los cambios locales y no requiere una identidad:
git reset --hard
git pull
Esto me sirvió para descartar los cambios en el servidor remoto en vivo y extraerlos del control de origen GitHub:
git reset --hard
git pull origin master
La mejor manera de resolver este problema es:
git checkout -- <path/file_name>
Después de eso puedes sobrescribir el archivo por:
git pull origin master
Lo he intentado y, con éxito, antes de tirar, deje que se confirmen todos los archivos que no ha enviado, entonces no recibirá esos mensajes de AS.
Mi solución para resolver este problema fue:
git checkout -- <file>
Entonces podría sobrescribir el archivo simplemente usando:
git pull
Para Pycharm, puedes hacer Git -> Revertir y luego tirar.
Puede confirmar sus cambios antes de realizar la combinación, o puede guardarlos:
-
git stash save
-
git merge origin/master
-
git stash pop
Puedes usar esto para sobrescribir el archivo
git checkout file_to_overwrite
Si desea eliminar todos los cambios locales de su copia de trabajo, simplemente guárdelos:
git stash save --keep-index
Si ya no los necesitas, ahora puedes dejar ese alijo:
git stash drop
Si desea sobrescribir solo partes específicas de sus cambios locales, hay dos posibilidades:
- Confirma todo lo que no quieres sobrescribir y usa el método anterior para el resto.
- Use la
git checkout path/to/file/to/revert
para los cambios que desea sobrescribir. Asegúrese de que el archivo no se almacena a través degit reset HEAD path/to/file/to/revert
.
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:
git stash
git pull
git stash pop
Tal vez usted no ejecuta todas las operaciones. Puedes saber lo que puedes hacer a continuación.
Si desea sobrescribir cambios específicos, necesita alguna forma de decirle cuáles desea olvidar.
Puede intentar esconder de forma selectiva los cambios que desea abandonar utilizando git stash --patch
y luego git stash --patch
con git stash drop
. A continuación, puede introducir los cambios remotos y combinarlos de la forma habitual.
Si este error es debido a los finales de línea,
git add
git checkout mybranch
trabajará. No estoy realmente seguro de por qué funciona.
Si su repositorio contiene algunos archivos que se eliminan del master
:
-
git checkout master
-
git fetch origin
-
git reset --hard origin/master
-
git checkout -b newbranch
Tuve un caso especial de esto: tuve un archivo con --asume-sin cambios en él. Fue difícil de localizar, ya que el comando git status
no mostraba ningún cambio
git reset --hard && git clean -df
Esto restablecerá y eliminará cualquier archivo sin seguimiento.
git stash save --keep-index
no funcionó para mí.
debajo de comando funcionó como se esperaba.
git reset --hard
git pull
Anula todos los cambios locales si no los necesita.