Supprimer des fichiers à l'aide de Git / GitHub

115

Tout d'abord, je suis nouveau sur Git.

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 actuelle, mais ils le font.

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

Zack
la source
Voir aussi stackoverflow.com/questions/492558/…
Petr Gladkikh

Réponses:

226

Je pense que ce serait un moyen plus simple de faire ce que vous voulez:

git add . -A 

Ensuite, vous feriez simplement:

git commit -m "removed some files"

Comme indiqué ci-dessus.

Samuel Mikel Bowles
la source
Je vous remercie. Et je venais juste d'écrire un alias bashpour faire ce qui précède. Incroyable.
Zack
12
Que fait le drapeau -A?
Kim Prince
1
@KimPrince - Selon kernel.org , "-A --all Comme -u, mais associez <filepattern> aux fichiers de l'arborescence de travail en plus de l'index. Cela signifie qu'il trouvera de nouveaux fichiers ainsi que le contenu modifié et supprimer les fichiers qui ne sont plus dans l'arborescence de travail. "
j08691
3
@KimPrince git help addvous dira ce que -Asignifie et répertorie également tous les autres commutateurs.
Marcin Orlowski
1
Cela fait beaucoup plus que simplement supprimer les fichiers supprimés. Il ajoute tous les fichiers modifiés dans le répertoire, ce n'est donc pas vraiment une réponse satisfaisante.
Alex
19

Vous pouvez voir les fichiers supprimés, qui sont toujours `` suivis '' avec:

git ls-files --deleted

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

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

De man git-rm:

Supprimez des fichiers de l'index ou de l'arborescence de travail et de l'index. git-rm ne supprimera pas un fichier de votre répertoire de travail uniquement. (Il n'y a pas d'option pour supprimer un fichier 13 uniquement de l'arborescence de travail et le conserver dans l'index; utilisez / bin / rm si vous souhaitez le faire.)

Enfin, pour valider la "suppression", faites quelque chose comme:

git commit -m "removed some files"
Miku
la source
Ensuite, vous devez valider le changement -git commit -m "removed some files"
James Polley
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 réaliser la même chose.

Gareth
la source
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 manière que ce soit, ce n'est donc généralement pas un bon moyen de supprimer tous les fichiers supprimés, sauf si ce sont 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 détaillée, consultez le bel article https://help.github.com/articles/remove-sensitive-data

Chawathe Vipul S
la source