para instalar linux windows git status line-endings

linux - instalar - install git debian 9



El estado de Git ignora los finales de línea/archivos idénticos/windows & linux environment/dropbox/mled (5)

Creé un script para ignorar las diferencias en los finales de línea:

Mostrará los archivos que no se agregan a la lista de confirmaciones y se modificaron (después de ignorar las diferencias en los finales de línea). Puede agregar el argumento "agregar" para agregar esos archivos a su confirmación.

#!/usr/bin/perl # Usage: ./gitdiff.pl [add] # add : add modified files to git use warnings; use strict; my ($auto_add) = @ARGV; if(!defined $auto_add) { $auto_add = ""; } my @mods = `git status --porcelain 2>/dev/null | grep ''^ M '' | cut -c4-`; chomp(@mods); for my $mod (@mods) { my $diff = `git diff -b $mod 2>/dev/null`; if($diff) { print $mod."/n"; if($auto_add eq "add") { `git add $mod 2>/dev/null`; } } }

Código fuente: https://github.com/lepe/scripts/blob/master/gitdiff.pl

Actualizaciones :

  • fix by evandro777: cuando el archivo tiene espacio en el nombre del archivo o directorio

¿Cómo hago

estado de git

ignorar las diferencias de final de línea?

Información de fondo:

Uso aleatoriamente Windows y Linux para trabajar en el proyecto. El proyecto está en Dropbox.

Encontré mucho sobre cómo hacer que git diff ignore los finales de línea. Como uso meld git diff abre meld para cada archivo. Y meld dice "archivo idéntico".

Entonces, ¿cómo puedo evitar esto? Git solo debería abrir la fusión para los archivos modificados. Y el estado de git no debe informar los archivos como cambiados si solo el final del archivo es diferente.

EDITAR: Causa:

Esto sucedió debido a esta configuración en Windows

core.autocrlf true

Así que revisé la copia de trabajo en Linux y establecí core.autocrlf como falso en Windows.

Sería bueno saber cómo hacer que el estado de git ignore las nuevas líneas.


Pruebe a establecer el valor core.autocrlf de esta manera:

git config --global core.autocrlf true


Use .gitattributes en su lugar, con la siguiente configuración:

# Ignore all differences in line endings * -crlf

.gitattributes se encontraría en el mismo directorio que su .gitconfig global. Si .gitattributes no existe, agréguelo a ese directorio. Después de agregar / cambiar .gitattributes, tendrá que hacer un restablecimiento completo del repositorio para aplicar correctamente los cambios a los archivos existentes.


Utilizo Windows y Linux, pero la solución core.autocrlf true no me ayudó. Incluso no he cambiado nada después de que git checkout <filename> .

Así que uso una solución alternativa para sustituir el git status - gitstatus.sh

#!/bin/bash git status | grep modified | cut -d'' '' -f 4 | while read x; do x1="$(git show HEAD:$x | md5sum | cut -d'' '' -f 1 )" x2="$(cat $x | md5sum | cut -d'' '' -f 1 )" if [ "$x1" != "$x2" ]; then echo "$x NOT IDENTICAL" fi done

Simplemente comparo md5sum de un archivo y su hermano en el repositorio.

Ejemplo de salida:

$ ./gitstatus.sh application/script.php NOT IDENTICAL application/storage/logs/laravel.log NOT IDENTICAL


Problema relacionado con los comandos de git en el sistema operativo Windows:

$ git add --all

advertencia: LF será reemplazado por CRLF en ...

El archivo tendrá sus finales de línea originales en su directorio de trabajo.

Resolución :

$ git config --global core.autocrlf false $ git add --all

No aparece ningún mensaje de advertencia.