2012-06-06 15 views
25

A menudo muevo archivos en un repositorio de git utilizando mi IDE o mediante la línea de comandos (no a través de git mv).Manera fácil de limpiar los archivos eliminados sin escena en Git

Como resultado I y terminar con varios archivos unstaged a borrar en mi próxima confirmación de la siguiente manera:

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: test.html 
# 
# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: css/bootstrap.css 
# deleted: css/bootstrap.min.css 
# deleted: img/glyphicons-halflings-white.png 
# deleted: img/glyphicons-halflings.png 
# deleted: js/bootstrap.js 
# deleted: js/bootstrap.min.js 

que normalmente se seleccionan todos los archivos borrados y editarlos en un editor de texto para producir como :

git rm css/bootstrap.css 
git rm css/bootstrap.min.css 
git rm img/glyphicons-halflings-white.png 
git rm img/glyphicons-halflings.png 
git rm js/bootstrap.js 
git rm js/bootstrap.min.js 

Que luego devuelvo a la consola.

¿Hay alguna manera de hacerlo sin tener que copiar/pegar?

Respuesta

36

Si entiendo bien su pregunta, que desee confirmar sus eliminaciones ... es decir, que desea realizar el equivalente de git rmpara todos de los archivos que se muestran como eliminado. git clean no hará esto.

Puede ejecutar git add -u:

coincidir sólo en contra ya rastreado los archivos en el índice en lugar del árbol de trabajo. Esto significa que nunca creará nuevos archivos , sino que creará nuevos contenidos modificados de los archivos rastreados y eliminará los archivos del índice si se eliminaron los archivos correspondientes en el árbol de trabajo.

Esto recogerá todos los cambios en los archivos rastreados, incluidas las eliminaciones. Así que si usted comienza con esto:

# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: file2 
# deleted: file3 
# deleted: file4 
# deleted: file5 

Correr git add -u se llega a esto:

# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# deleted: file2 
# deleted: file3 
# deleted: file4 
# deleted: file5 

Y una de comprometerse en este punto va a hacer lo correcto.

+0

sería "git add -A" también ser adecuado para esto? –

0

git add -u actualizará el estado de los archivos rastreados.

1

Normalmente hago una confirmación de los archivos a los que hice cambios.

Si hubiera eliminado los archivos redundantes, lo haría lo siguiente después de esto:

git commit -a -m 'deleted redundant files' 
Cuestiones relacionadas