revertir - ignorar cambios git
git ignora los archivos temporales de vim (10)
¿Cuál es la forma correcta de hacer que git ignore los archivos temporales producidos por vim en todos los directorios (ya sea globalmente en todo el sistema o localmente para un solo proyecto)?
Alternativamente, puede configurar vim para guardar los archivos de .vimrc
en una ubicación separada, por ejemplo, agregando líneas similares a las siguientes a su archivo .vimrc
:
set backupdir=$TEMP//
set directory=$TEMP//
Ver este consejo vim para más información.
Encontré que esto hará que git ignore los archivos temporales creados por vim:
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
También se puede ver here .
Esto es algo que solo se debe hacer por usuario, no por repositorio. Si Joe usa emacs, querrá que se ignoren los archivos de copia de seguridad de emacs, pero Betty (que usa vi) querrá que se ignoren los archivos de copia de seguridad vi (en muchos casos, son similares, pero existen aproximadamente 24.893 editores comunes y es bastante ridículo tratar de ignorar todas las diversas extensiones de copia de seguridad.)
En otras palabras, no ponga nada en .gitignore
o en core.excludes
en $GIT_DIR/config
. Coloque la información en $HOME/.gitconfig
en $HOME/.gitconfig
lugar (como sugiere nunopolonia con --global
). Tenga en cuenta que "global" significa por usuario, no por sistema.
Si desea la configuración a través del sistema para todos los usuarios (lo que no es así), necesitará un mecanismo diferente. (Posiblemente con la configuración de plantillas antes de la inicialización del repositorio).
Los archivos temporales de Vim terminan con ~ para que pueda agregar al archivo .gitignore
la línea
*~
Vim también crea archivos de intercambio que tienen las extensiones swp y swo. Para eliminar esas líneas utilizamos las líneas:
*.swp
*.swo
Esto ignorará todos los archivos temporales de vim en un solo proyecto
Si desea hacerlo de forma global, puede crear un archivo .gitignore en su casa (puede darle otro nombre o ubicación) y usar el siguiente comando:
git config --global core.excludesfile ~/.gitignore
Luego, solo necesita agregar los archivos que desea ignorar a ese archivo
Por supuesto,
solo tiene que crear un ".gitignore" en el directorio de inicio de su proyecto y debe contener
*.swp
Eso es
en una orden
project-home-directory$ echo ''*.swp'' >> .gitignore
Salga de vim antes de "git commit".
para hacer que vim
use otras carpetas para los archivos de copia de seguridad, ( /tmp
por ejemplo):
set bdir-=.
set bdir+=/tmp
para hacer que vim deje de usar la carpeta actual para archivos .swp:
set dir-=.
set dir+=/tmp
Usar -=, +=
sería generalmente bueno, porque vim tiene otros valores predeterminados para bdir, dir , no queremos borrar todo. Verifique la ayuda de vim para más información sobre bdir, dir :
:h bdir
:h dir
Si está utilizando control de código fuente. Los archivos temporales de vim son bastante inútiles.
Así que es posible que desee configurar vim para no crearlos.
Solo edita Tu ~ / .vimrc y agrega estas líneas:
set nobackup
set noswapfile
También recomendaría pensar en ignorar archivos como:
.*.swp
.*.swo
ya que puede tener archivos que terminan con .swp
Here está el código VIM real que genera las extensiones de archivo de intercambio:
/*
* Change the ".swp" extension to find another file that can be used.
* First decrement the last char: ".swo", ".swn", etc.
* If that still isn''t enough decrement the last but one char: ".svz"
* Can happen when editing many "No Name" buffers.
*/
if (fname[n - 1] == ''a'') /* ".s?a" */
{
if (fname[n - 2] == ''a'') /* ".saa": tried enough, give up */
{
EMSG(_("E326: Too many swap files found"));
vim_free(fname);
fname = NULL;
break;
}
--fname[n - 2]; /* ".svz", ".suz", etc. */
fname[n - 1] = ''z'' + 1;
}
--fname[n - 1]; /* ".swo", ".swn", etc. */
Esto generará archivos de intercambio del formato:
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-v][a-z]
[._]sw[a-p]
Que es más o menos lo que está incluido en el propio archivo gitignore de github para here .
Como otros han señalado correctamente, este .gitignore también ignorará los archivos de imagen .svg y los archivos flash adobe .swf .
# VIM: Temperory files
*~
# VIM: Swap-files
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# VIM: Commands :cs, :ctags
tags
cscope.*
# VIM session
Session.vim
# VIM: netrw.vim: Network oriented reading, writing, browsing (eg: ftp scp)
.netrwhist
El nombre del archivo de intercambio normalmente es el mismo que el archivo que está editando, con la extensión ".swp".
- En Unix, un ''.'' está preparado para intercambiar nombres de archivos en el mismo directorio que el archivo editado. Esto evita que el archivo de intercambio se muestre en una lista de directorios.
- En las máquinas de MS-DOS y cuando la opción ''shortname'' está activada, cualquiera ''.'' en el nombre del archivo original se reemplaza con ''_''.
- Si este archivo ya existe (por ejemplo, cuando se está recuperando de un bloqueo) se da una advertencia y se usa otra extensión, ".swo", ".swn", etc.
- Un archivo existente nunca será sobrescrito.
- El archivo de intercambio se elimina tan pronto como Vim deja de editar el archivo.
El reemplazo de ''.'' con ''_'' se hace para evitar problemas con los sistemas de archivos compatibles con MS-DOS (por ejemplo, crossdos, multidos).