tipos tener tag repositorio remove qué proyecto podemos para nuestros mayor herramienta hacer existen etiquetas crear control cambiar git tabs indentation

tener - ¿Puede git cambiar automáticamente entre espacios y pestañas?



tipos de etiquetas en git (3)

Utilizo pestañas para la sangría en mis programas de Python, pero me gustaría colaborar (usando git) con personas que usan espacios en su lugar.

¿Hay alguna manera de que git convierta automáticamente entre espacios y pestañas (por ejemplo, 4 espacios = 1 pestaña) al presionar / ir a buscar? (similar a la conversión CR / LF)


Información muy útil para todos los que usan GitHub (u otro servicio similar)

~/.gitconfig

[filter "tabspace"] smudge = unexpand --tabs=4 --first-only clean = expand --tabs=4 --initial [filter "tabspace2"] smudge = unexpand --tabs=2 --first-only clean = expand --tabs=2 --initial

Entonces tengo dos archivos: attributes

*.js filter=tabspace *.html filter=tabspace *.css filter=tabspace *.json filter=tabspace

y attributes2

*.js filter=tabspace2 *.html filter=tabspace2 *.css filter=tabspace2 *.json filter=tabspace2

Trabajando en proyectos personales

mkdir project cd project git init cp ~/path/to/attributes .git/info/

De esta forma, cuando finalmente presiona su trabajo en github, no se verá tonto en la vista de código con 8 space tabs que es el comportamiento predeterminado en todos los navegadores.

Contribuyendo a otros proyectos

mkdir project cd project git init cp ~/path/to/attributes2 .git/info/attributes git remote add origin [email protected]:some/repo.git git pull origin branch

De esta forma, puede trabajar con pestañas normales en 2 space indented proyectos con 2 space indented .

Por supuesto, puede escribir una solución similar para convertir de 4 space to 2 space que es el caso si desea contribuir a proyectos publicados por mí y tiende a usar 2 espacios mientras desarrolla.


Aquí está la solución completa:

En su repositorio, agregue un archivo .git/info/attributes que contenga:

*.py filter=tabspace

Linux / Unix

Ahora ejecute los comandos:

git config --global filter.tabspace.smudge ''unexpand --tabs=4 --first-only'' git config --global filter.tabspace.clean ''expand --tabs=4 --initial''

OS X

Primero instala coreutils con brew:

brew install coreutils

Ahora ejecute los comandos:

git config --global filter.tabspace.smudge ''gunexpand --tabs=4 --first-only'' git config --global filter.tabspace.clean ''gexpand --tabs=4 --initial''

Todos los sistemas

Ahora puede ver todos los archivos de su proyecto. Puedes hacer eso con:

git checkout HEAD -- **

y todos los archivos de python ahora tendrán pestañas en lugar de espacios.

Editar : cambió el comando de pago forzado. Primero debes comprometer tu trabajo, por supuesto.


Sí, una posible solución es usar un controlador de filtro de atributo git (ver también el libro de GitPro ) para definir un mecanismo de borrado / limpieza.

De esa manera:

  • cada vez que compra algunos archivos de su repositorio, los espacios se pueden convertir en pestañas,
  • pero cuando ingresa (y empuja y publica), esos mismos archivos se almacenan usando solo espacios.

Puede declarar este controlador de filtro (denominado aquí '' tabspace '') en .git/info/attributes (para un filtro aplicado a todos los archivos dentro del repositorio Git), con el siguiente contenido:

*.py filter=tabspace

Ahora ejecute los comandos:

# local config for the current repo git config filter.tabspace.smudge ''script_to_make_tabs'' git config filter.tabspace.clean ''script_to_make_spaces''

Vea la answer Olivier para un ejemplo concreto de trabajo de tal mancha / conjunto limpio de instrucciones.