Git pull – la input de error notuptodate no puede fusionarse

Soy un recién llegado a GIT y quería saber cómo get una última versión del enlace troncal y DESCARTAR todos mis cambios.

Todo lo que parece get es el error de no actualización. No quiero save mis viejos cambios …

También obtengo que Your branch is behind 'origin/master' by 15 commits, and can be fast-forwarded . ¿Cómo avanzo rápido? Una vez más, no me importan los cambios que he hecho.

Muchas gracias de antemano, ya que las respuestas actuales sobre SO parecen suponer que desea mantener los cambios

Ejemplo de error (y cosas que se han intentado)

 $ git checkout $ git pull Updating 69edec1..dc3fdfe error: Entry 'src/FluentNHibernate.Testing/DomainModel/Mapping/CompositeIdentityPartTester.cs' not uptodate. Cannot merge. $ git checkout -- src/FluentNHibernate.Testing/DomainModel/Mapping/CompositeIdentityPartTester.cs $ git pull Updating 69edec1..dc3fdfe error: Entry 'src/FluentNHibernate.Testing/DomainModel/Mapping/CompositeIdentityPartTester.cs' not uptodate. Cannot merge. $ git reset --hard $ git pull Updating 69edec1..dc3fdfe error: Entry 'src/FluentNHibernate.Testing/DomainModel/Mapping/CompositeIdentityPartTester.cs' not uptodate. Cannot merge. 

CORREGIDO: Parece que he solucionado el problema usando gitk --all y usando la GUI para hacer un restablecimiento gitk --all en el último cambio … ¿Todavía me gustaría realmente entender por qué la línea de command no haría esto?

Para descartar todos los cambios y volver a la última confirmación, use

 git reset --hard HEAD 

Un avance rápido es un tipo de combinación en la que no hay una fusión real que hacer, solo tienes que saltar a lo largo de los commits. En este caso, git no te está diciendo qué hacer, pero te está haciendo saber que realmente debes tirar (porque sería trivial).

La operación de git checkout -- file opera estrictamente en el directory de trabajo, o en el estado del sistema de files de su repository (tenga en count que hay un espacio entre el argumento -- y el file para distinguir el command de la salida de una twig o label file nombrado )

Si algo ha sido git add al repository, en la terminología git es parte del índice, y un process de pago no lo arreglará, debe usar el command git reset , que actualiza el estado del índice.

Como método abreviado para hacer las dos cosas anteriores, git reset --hard restablecerá el índice y eliminará los cambios en el directory de trabajo (para que su directory e índice de trabajo estén en estados idénticos (el estado dado por un argumento de opción; cualquier argumento que sea el pnetworkingeterminado es HEAD). Se aplican advertencias habituales con respecto a asegurarse de que no se destruyan las cosas que desea save si no se han confirmado, pero a juzgar por los sonidos, esto es lo que desea.

En cuanto a la fusión de avance rápido, git pull debería encargarse de eso automáticamente, pero dado que en términos de git una extracción implica tanto recuperar los cambios de la stream ascendente como fusionar las twigs locales con la nueva stream ascendente, la parte de fusión fallará si tiene un tree de trabajo sucio, por lo que los commands anteriores deberán realizarse (u otras permutaciones de operaciones de confirmación / locking) antes de que la fusión pueda continuar. En general, Git es muy cuidadoso para evitar que pierda el trabajo a less que específicamente le diga que no le importe.

Como recomendación, si desea rastrear en sentido ascendente, hágalo en su twig principal y realice cualquier cambio adicional (incluso si solo está jugando) en una twig temática, donde puede sentirse libre de comprometerse y no preocuparse por ser capaz de absorber cambios desde aguas arriba.

ACTUALIZACIÓN: Si el reinicio / finalización no está realmente reiniciando su directory de trabajo, verifique la propiedad core.autocrlf en su directory: git config --get core.autocrlf

Si está utilizando un repository que circula entre filesystems Windows / UNIX / whatever con diferentes convenciones de final de línea, e intenta evitar la locura que subyace al leer files del sistema de files con un CRLF como si tuvieran terminadores LF, y luego invierte esa conversión al escribir en el sistema de files, la idea es que puede trabajar en files normalmente sin introducir una tonelada de cambios de espacio en blanco en sus diferencias, pero a menudo causa más problemas de los necesarios. Pruebe un git diff --ignore-all-space y, si no muestra nada, ese es su problema, y ​​puede intentar actualizar el file de configuration para desactivarlo y repetir.

Cuando era nuevo en git y, a menudo, bastante confundido sobre lo que estaba pasando con las twigs y compromisos y cómo se relacionaban, encontré a gitk muy útil para darme una idea de lo que realmente estaba pasando.

Para proyectos sin demasiados commits, gitk --all dará una descripción completa de todos los commits y twigs. Sin embargo, con demasiados compromisos, se volverá un poco lento.

Primero, gracias por las respuestas de todos. Parece ser un error sobre el error del usuario. Ninguna de las soluciones sugeridas funcionó aparte de gitk –all y luego usando la GUI para 'reiniciar twig principal aquí'

No es ideal, pero funcionó.

Gracias