Comment puis-je liste tous les fichiers supprimés dans un dépôt git?
je sais que git stocke des informations sur le moment où les fichiers sont supprimés et je suis capable de vérifier les propagations individuelles pour voir quels fichiers ont été supprimés, mais y a-t-il une commande qui générerait une liste de chaque fichier supprimé au cours de la durée de vie d'un dépôt?
7 réponses
git log --diff-filter=D --summary
voir trouver et restaurer un fichier supprimé dans un dépôt Git
si vous ne voulez pas toutes les informations sur les commits dans lesquels ils ont été supprimés, vous pouvez simplement ajouter un grep delete
.
git log --diff-filter=D --summary | grep delete
Ce n'est ce que vous voulez, je pense:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... que je viens de prendre plus ou moins directement de cette autre réponse .
si vous êtes seulement intéressé à voir les fichiers actuellement supprimés, vous pouvez utiliser ceci:
git ls-files --deleted
si vous voulez alors les enlever (dans le cas où vous les avez supprimés ne pas utiliser "git rm") pipe qui résultent à xargs git rm
git ls-files --deleted | xargs git rm
et si vous voulez d'une façon ou d'une autre limiter les résultats voici un beau:
$ git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ /gp}'
delete mode 100644 blah/some_dir/file1 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file2 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file3 9c89b91d8df7c95c6043184154c476623414fcb7
vous obtiendrez tous les fichiers supprimés de some_dir
(voir la commande sed) ainsi que le numéro de propagation dans lequel cela se produit. Tout sed regex fera (Je l'utilise pour trouver les types de fichiers supprimés, etc)
comme Windows n'a pas de commande grep
, cela a fonctionné pour moi dans PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
vous obtiendrez une liste de tous les fichiers qui ont été supprimés dans toutes les branches, triés par leur chemin:
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
fonctionne dans msysgit (2.6.1.Windows.1). Note: nous avons besoin de "supprimer le mode 100" car les fichiers git peuvent avoir été commités en mode 100644 ou 100755.