sobrescritos siguientes serán por pisar origin los locales fusionar force error checkuot cambios archivos git git-pull git-stash

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 (Se git 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;

  1. Primero, realicé Undo commit en mi solución.
  2. 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(-)

vea https://github.com/git-lfs/git-lfs/issues/2839


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:

  1. git stash save
  2. git merge origin/master
  3. 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:

  1. Confirma todo lo que no quieres sobrescribir y usa el método anterior para el resto.
  2. 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 de git 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 :

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. 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.