git clean

Descripción
El comando git clean se usa para eliminar archivos no rastreados del directorio de trabajo. A diferencia de git reset y git checkout, que operan sobre archivos rastreados o preparados, git clean se dirige específicamente a archivos que aún no se han agregado al índice de Git. Los archivos no rastreados son aquellos creados dentro del directorio de trabajo, pero que todavía no están bajo seguimiento. El siguiente ejemplo muestra la diferencia entre archivos rastreados y no rastreados:
git clean
mkdir test_directory
cd test_directory/
git init .
#Initialized empty Git repository in /Users/kev/code/test_directory/.git/
echo "tracked file" > ./test_tracked_file
git add ./test_tracked_file
echo "untracked" > ./test_untracked_file
mkdir ./test_untracked_dir && touch ./test_untracked_dir/file
git status
#On branch master
#No commits yet
#Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#new file: test_tracked_file
#Untracked files:
# (use "git add <file>..." to include in what will be committed)
#test_untracked_dir/
#test_untracked_fileComo resultado del ejemplo anterior, tendrás un nuevo repositorio Git en el directorio test_directory, que contiene un test_tracked_file agregado al índice de Git. Además, se crea un test_untracked_file, junto con un test_untracked_dir. Luego, el ejemplo llama a git status, que muestra la salida con el estado interno de los cambios rastreados y no rastreados. Después se usa el comando git clean para eliminar estos archivos no rastreados.
No ejecutes git clean todavía. El siguiente ejemplo demuestra el error que produce por defecto. Git requiere una opción de forzado para ejecutar git clean y evitar la pérdida accidental de datos. Una vez ejecutado, no puedes deshacer git clean. Realiza una eliminación dura del sistema de archivos. Debes asegurarte de que realmente quieres borrar los archivos no rastreados antes de ejecutarlo.
git clean error
git clean
#fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to cleanOpciones comunes y uso
El comando git clean tiene varios usos con diferentes opciones.
git clean -n
git clean -nLa opción -n realiza una ejecución en seco de git clean. Muestra los archivos que se van a eliminar, pero no los elimina.
git clean -n example
git clean -n
#Would remove test_untracked_fileComo puedes ver, indica que test_untracked_file se eliminará cuando se ejecute el comando git clean.
git clean -f
git clean -f or --forceLa opción --force es obligatoria a menos que la opción de configuración clean.requireForce esté establecida en false. Elimina los archivos no rastreados del directorio actual, excepto las carpetas o archivos no rastreados especificados con .gitignore.
git clean --force
git clean -f
#Removing test_untracked_fileLa salida muestra que test_untracked_file ha sido eliminado. En este punto, git status mostrará que test_untracked_file ha sido eliminado y no se puede encontrar. De forma predeterminada, git clean -f actuará sobre todos los archivos no rastreados dentro del directorio actual. Además, se puede pasar un valor <path> con la opción -f para eliminar un archivo específico.
Si quieres eliminar cualquier directorio no rastreado, puedes usar la opción -d, que indica a git clean que lo haga, ya que por defecto ignorará los directorios.
git clean -f <path>
git clean -f <path>También puedes usar la combinación -dn.
git clean -dn
git clean -dn
#Would remove test_untracked_dir/
git clean -df
#Removing test_untracked_dir/Primero muestra que test_untracked_file está listo para ser eliminado. Luego ejecutamos una limpieza forzada y recibimos la salida de que test_untracked_dir se ha eliminado.
git clean -x
git clean -xLa opción -x indica a git clean que también incluya los archivos ignorados. Debes ejecutar primero una “ejecución en seco”, antes de la eliminación final. La opción -x actuará sobre todos los archivos ignorados. Esto podría incluir cosas no deseadas, como archivos de configuración del IDE ./.idea.
git clean -xf
git clean -xfLa opción -x puede pasarse y combinarse con otras opciones. El ejemplo anterior es una combinación con -f que eliminará los archivos no rastreados del directorio actual, así como cualquier archivo que Git normalmente ignore.
Modo interactivo
El comando git clean tiene un modo interactivo que se activa pasando la opción -i. En el ejemplo siguiente también usamos la opción -d, para actuar sobre test_untracked_dir. Después de activar el modo interactivo, mostrará un prompt What now>. Este prompt pedirá seleccionar un comando para aplicar a los archivos no rastreados. Estos comandos son 6.
git clean -di
git clean -di
Would remove the following items:
test_untracked_dir/ test_untracked_file
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now>Vamos a revisar cada comando a continuación.
- El comando 6 explicará los demás comandos.
git clean steps
What now> 6
clean - start cleaning
filter by pattern - exclude items from deletion
select by numbers - select items to be deleted by numbers
ask each - confirm each deletion (like "rm -i")
quit - stop cleaning
help - this screen
? - help for prompt selection- El comando 1 eliminará los elementos mencionados.
git clean step 1, clean
git clean -di
What now> 1
clean- Seleccionar el comando 2 mostrará un prompt adicional para filtrar la lista de archivos no rastreados.
git clean filter by pattern
git clean -di
What now> 2Después de elegir el comando 2, necesitaremos el patrón comodín *_file, que restringirá la lista de archivos no rastreados a test_untracked_dir.
git clean steps
Would remove the following items:
test_untracked_dir/ test_untracked_file
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now> 2
test_untracked_dir/ test_untracked_file
Input ignore patterns>> *_file
test_untracked_dir/- Al igual que el comando 2, el comando 3 sirve para refinar la lista de nombres de archivos no rastreados. Seleccionar este comando pedirá números que coincidan con un nombre de archivo no rastreado.
git clean select by numbers
git clean -di
What now> 3- El comando 4 se ejecutará sobre cada archivo no rastreado y mostrará un prompt Y/N para confirmar la eliminación.
git clean ask each
git clean -di
What now> 4
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help
What now> 4
Remove test_untracked_dir/ [y/N]? N
Remove test_untracked_file [y/N]? N- Seleccionar el comando 5 cerrará la sesión interactiva.
git clean quit
git clean -di
What now> 5Práctica
¿Cuáles son las funcionalidades y opciones del comando 'git clean'?