2009-12-31 5 views
115

Tout d'abord, je suis nouveau à Git.Supprimer des fichiers en utilisant Git/GitHub

J'ai supprimé un tas de fichiers localement sur mon Mac à l'aide du Finder. Je veux que les fichiers que j'ai supprimés n'apparaissent plus dans la branche courante, mais ils le font.

Les utilisateurs de Git connaissent-ils une commande pour mettre à jour l'index?

+0

Voir aussi http://stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-that-have-already-been -deleted-from-disk –

Répondre

224

Je pense que ce serait une façon plus simple de faire ce que vous voulez:

git add . -A 

Ensuite, vous suffit de faire:

git commit -m "removed some files" 

Comme indiqué ci-dessus.

+0

Merci. Et je venais juste d'écrire alias dans 'bash' pour faire ce qui précède. Incroyable. – Zack

+0

Si vous avez ajouté un fichier dans le même "stage" git assumera un changement de nom. Quelque chose à faire à ce sujet ou devriez-vous les commettre séparément? – Koen

+12

Que fait le drapeau -A? –

17

Vous pouvez voir les fichiers supprimés, qui sont encore 'objet d'un suivi' avec:

git ls-files --deleted 

Pour supprimer des fichiers à partir d'une branche, vous pouvez faire quelque chose comme ceci:

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

De man git-rm:

Supprime des fichiers de l'index ou de l'arborescence et de l'index. git-rm ne supprimera pas un fichier de votre répertoire de travail. (Il n'y a aucune option pour supprimer un fichier 13 seulement de l'arbre de travail et encore le garder dans l'index;. Utiliser/bin/rm si vous voulez faire)

Enfin, pour commettre le « retrait «faire quelque chose comme:

git commit -m "removed some files" 
+0

Merci, quelle est la prochaine étape? – Zack

+0

Ensuite, vous devez valider le changement - 'git commit -m" a supprimé certains fichiers "' –

+0

oui, bien sûr, merci - – miku

17

Je ne sais pas si cela a été ajouté à git depuis les réponses précédentes, mais je viens d'utiliser

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

pour obtenir la même chose.

+0

Cela fonctionne pour le cas d'utilisation répertorié, mais cela n'ajoute pas seulement la suppression des fichiers. Il ajoute tous les fichiers qui ont été modifiés de quelque façon que ce soit, donc ce n'est généralement pas un bon moyen de supprimer tous les fichiers supprimés à moins que ce soit les seules modifications que vous avez apportées. – 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 

Remplacez deletefile.name par le fichier à supprimer. Pour une explication détaillée en profondeur, passez par le bel article https://help.github.com/articles/remove-sensitive-data

Questions connexes