2009-12-31 8 views
115

En primer lugar, soy nuevo en Git.Eliminación de archivos usando Git/GitHub

Eliminé un montón de archivos localmente en mi Mac usando Finder. Quiero que los archivos que eliminé ya no se muestren en la rama actual, pero lo hacen.

¿Algún usuario de Git conoce un comando para actualizar el índice?

+0

Vea también http://stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-hathat-have-already-been -deleted-from-disk –

Respuesta

224

Creo que esto sería una manera más sencilla de hacer lo que quiera:

git add . -A 

a continuación, sólo haría:

git commit -m "removed some files" 

Como se indicó anteriormente.

+0

Gracias. Y acabo de escribir un alias en 'bash' para hacer lo anterior. Increíble. – Zack

+0

Si agregaste un archivo en la misma "etapa", git asumirá un cambio de nombre. ¿Hay algo que hacer al respecto o debería comprometerlos por separado? – Koen

+12

¿Qué hace la bandera -A? –

17

se puede ver los archivos borrados, que siguen 'rastreados' con:

git ls-files --deleted 

Para eliminar archivos de una rama, se puede hacer algo como esto:

git ls-files --deleted -z | xargs -0 git rm 

De man git-rm:

Elimina los archivos del índice, o del árbol de trabajo y el índice. git-rm no eliminará un archivo de su directorio de trabajo. (No hay ninguna opción para eliminar un archivo 13 sólo desde el árbol de trabajo y mantenerlo en el índice todavía;. Uso/bin/rm si quieres hacer eso)

Por último, para cometer el "retiro "hacer algo como:

git commit -m "removed some files" 
+0

Gracias, ¿qué sigue? – Zack

+0

Luego debe confirmar el cambio - 'git commit -m 'eliminó algunos archivos' ' –

+0

sí, por supuesto, gracias - – miku

17

No sé si esto se ha añadido a git ya que las respuestas anteriores, pero acabo de utilizar

git add -u 
git commit -m "Removed some files" 

para lograr la misma cosa.

+0

Esto funciona para el caso de uso enumerado, pero esto no solo agrega la eliminación de los archivos. Agrega todos los archivos que se han cambiado de alguna manera, por lo que generalmente no es una buena manera de eliminar todos los archivos eliminados a menos que sean los únicos cambios que haya realizado. – Alex

2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all 
git commit -m "Removed deletefile.name" 
git push origin master --force 

Reemplace deletefile.name con el archivo para eliminar. Para una explicación detallada, vaya al artículo agradable https://help.github.com/articles/remove-sensitive-data

Cuestiones relacionadas