De alguna manera se comprueban los archivos .orig en mi repositorio git durante la fusión, que ahora se muestran en el sector modificado y sin seguimiento. Pero ya no quiero estos archivos en mi repositorio. Como hacer eso.
modified: Gemfile.lock.orig
# modified: Gemfile.orig
# modified: app/assets/images/bg_required.png.orig
# modified: app/assets/javascripts/application.js.orig
etc...
Cualquier ayuda será apreciada.
Respuestas:
La mejor solución en este caso es mantenerlo simple y deshacerse de esos archivos independientemente de git:
Alternativamente, en Windows / PowerShell, puede ejecutar el siguiente comando
fuente
git clean -df
no lo hace. ¿Por qué deberíamos limpiar manualmente la basura que deja?Pruebe
git clean
más información que puede encontrar aquí o aquífuente
git rm <filename>
y luego confirmar.Después de esto, agregue el archivo * .orig a git ignore.git clean -i
es realmente agradable. le dará una lista de archivos que serán eliminados y le dará opciones sobre cómo lidiar con la lista (filtrar la lista, poder eliminar todo en la lista y algunas otras opciones).git clean -f -e '*.*' -e '!*.orig'
solo hay un patrón de exclusión, pero tiene un pequeño soporte para patrones negativos. Por lo tanto, podemos excluir todos los archivos*.*
y luego negar la exclusión de solo los*.orig
archivos.tu puedes hacer:
Para obtener más información, consulte Git mergetool genera archivos .orig no deseados
fuente
Puede ignorar archivos usando .gitignore
Simplemente ponga * .orig en la lista como se muestra aquí
https://help.github.com/articles/ignoring-files
para eliminar archivos actuales, puede crear un script de shell y ejecutarlo desde la carpeta del proyecto como se muestra a continuación
fuente
Desafortunadamente
git clean
no funciona para mí porque he*.orig
agregado a mi archivo global de gitignore, por lo que también se ignoran desde la limpieza. Incluso ejecutargit clean -x
no es bueno porque no quiero que se eliminen todos mis archivos ignorados.git clean -i
es útil, pero realmente no quiero tener que revisar todos y cada uno de los archivos.Sin embargo, podemos usar un patrón de exclusión y negar la coincidencia. Vista previa con este comando:
Luego, cuando esté seguro, pase la
force
bandera para realmente eliminarlos:Basado en el comentario de leorleor
fuente
git rm Gemfile.lock.orig
y el resto de los archivos que no necesitas.git commit --amend
Para eliminar por completo esas manchas,
git gc --prune=0 --aggressive
fuente
Para mí
git clean -f
eliminé todos los archivos * .oig. Y guarda los que ya estaban allí antes.Esto es lo que parecía (casi) después de la fusión:
.idea/codeStyles/
ya estaba allí antes de la fusión como un archivo sin seguimiento..idea/misc.xml.orig
(y mucho más) tuvo que ser eliminado.=> Utilizando
git clean -f
:resultó en:
fuente
simplemente puedes hacer
git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm
TL; DR;
git status -s
le permite obtener todos los archivos modificados / faltantes con respecto al índicegrep "\.orig$"
filtrar archivos, manteniendo el final por ".orig"awk '{print $2}'
muestra el nombre del archivo (omitiendo la información de git, por ejemplo, A, M, ??)xargs -n1 -r echo rm
imprime los comandos de eliminación en cada argumento (-n1: uno a la vez y -r: omitir cuando está vacío) simplemente copie y pegue los comandos para verificar los archivos que se eliminarán.fuente
git rm <file>
http://git-scm.com/docs/git-rm
Agregue también los archivos / directorios que desea ignorar a su archivo .gitignore.
fuente
git rm <file> <file>
Solo enuméralos.git rm
, solo úselosrm
en su lugar