Tengo un proyecto con ciertos archivos js que no puedo actualizar. Ejecuto OSX localmente y mi servidor remoto / de ensayo es Linux (CentOS).
Inmediatamente después de clonar mi proyecto localmente, noté que tengo todos esos archivos con estado git modified
. Nunca los modificados, así que he intentado discard changes
o reset
ellos, pero vienen de nuevo. El cambio que está en la modificación es eliminar todas las líneas y agregarlas nuevamente.
No estoy seguro de por qué sucede esto o cómo solucionarlo para que mi estado de git esté limpio como debe ser.
Aquí hay algunas líneas del estado de git:
# modified: app/webroot/js/ckeditor/plugins/devtools/lang/el.js
# modified: app/webroot/js/ckeditor/plugins/devtools/lang/fa.js
# modified: app/webroot/js/ckeditor/plugins/devtools/lang/gu.js
ACTUALIZACIÓN 1:
Ahora he logrado enviar los archivos anteriores, pero el servidor de ensayo está bloqueado porque no generará nuevas ediciones:
error: Your local changes to the following files would be overwritten by merge:
app/webroot/js/ckeditor/_source/lang/ar.js
app/webroot/js/ckeditor/_source/lang/bg.js
app/webroot/js/ckeditor/_source/lang/bn.js
app/webroot/js/ckeditor/_source/lang/cs.js
...
Aborting
No puedo comprometerme / empujar porque:
Updates were rejected because a pushed branch tip is behind its remote counterpart
Lo intenté:
git reset --hard
y
git stash
git stash drop
Pero no funcionan, no pasa nada.
ACTUALIZACIÓN 2:
git diff
me da:
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in app/webroot/js/ckeditor/_source/lang/fa.js.
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in app/webroot/js/ckeditor/_source/lang/gu.js.
The file will have its original line endings in your working directory.
...
fuente
Respuestas:
Normalizar finales de línea
Esto se debe a que se están cambiando las líneas nuevas entre los archivos confirmados y los archivos en el disco.
Github tiene una página útil que detalla cómo lidiar con este tipo de problema, en resumen (para linux / OSX), el primer paso es cambiar su configuración de git para que clasifique los finales de línea por usted:
Luego confirma la normalización de los finales de línea:
Y luego, los finales de línea deben manejarse correctamente. Consulte la página de ayuda en github para obtener más información, o la sección relevante del formato y espacios en blanco de git docs .
Resolución de conflictos entre máquinas Linux
El mensaje de error dice "Sus cambios locales en los siguientes archivos se sobrescribirán mediante la combinación:", eso significa que contienen cambios locales que deben confirmarse o descartarse antes de continuar. Suponiendo un uso normal para el servidor de ensayo (no tiene ningún cambio intencional), los cambios locales se pueden descartar. Por ejemplo, haga lo siguiente:
Esto recuperará el historial del repositorio, sin actualizar la copia de trabajo, y luego se actualizará para que coincida exactamente con la rama maestra en el repositorio. Tenga en cuenta que el último comando descartará todos los cambios no confirmados.
fuente
Siempre mencioné que me aseguré de que tu
core.autocrlf
esté configurado enfalse
, como en " Git: repo atascado usando alijo después de la normalización de crlf ".También asegúrese de no tener un
.gitattributes
archivo coneol
directivas que intenten convertir el final de las líneas.La idea básica es: ¿sigue viendo ese mensaje de error cuando se asegura de que no haya conversión automática de ningún tipo?
Pero por si acaso, considere también " Git rebase falla, 'Sus cambios locales en los siguientes archivos se sobrescribirán mediante la combinación'. ¿No hay cambios locales? "
fuente
Acabo de pasar 2 horas (!) En el mismo problema con un archivo .svg (Scalar Vector Graphics), que siguió cambiando después de 'revertir' sin mi intervención.
Entonces, el archivo aparece como modificado en 'git status' ; revertirlo tiene éxito, pero sigue cambiando, por lo que el 'tirón' falla una y otra vez ... ¡ qué molesto!
No tuve suerte con 'git reset' , 'git ignore' , 'git untrack', etc.
Finalmente, lo resolví eliminando el archivo de mi sistema local (no 'git delete' , solo Shift + Delete) >> ahora pasa la solicitud 'pull' , y el archivo se obtiene del repositorio remoto.
¡Tan fácil que podría llorar!
fuente
Este problema apareció repetidamente con el repositorio de hojas de caracteres Roll20 en una máquina Ubuntu y pude resolverlo
Pero, esto dejó de resolver el problema por completo hoy y al mirar alrededor de Stack Overflow encontré que el culpable era su
.gitattributes
archivo:Después
git pull origin master
,git status
regresó:La solución fue eliminar la
* text=auto
línea de .gitattributes:Los cambios en
.gitattributes
se pueden descartar y Git seguirá estando satisfecho.Editar + 1d : Intenté el "truco" de .gitattributes hoy, pero no
git status
antes de descartar los cambios de .gitattributes. Sin ninguna razón obvia para mí (¿tal vez almacenando en cachégit status
?),git status
Luego devolvió esto nuevamente:Haciéndolo de nuevo, pero con
git status
intermedio funcionó.fuente