Puis-je obtenir une liste des fichiers marqués --assume-inchangés?


325

Comment ai-je marqué --assume-unchanged? Existe-t-il un moyen de savoir ce que j'ai caché en utilisant cette option?

J'ai fouillé dans le .git/répertoire et je ne vois rien qui ressemble à ce à quoi je m'attendais, mais il doit être quelque part. J'ai oublié ce que j'ai marqué de cette façon il y a quelques semaines et maintenant je dois documenter ces détails pour les futurs développeurs.

Réponses:


449

Vous pouvez utiliser git ls-files -v. Si le caractère imprimé est en minuscules, le fichier est marqué comme inchangé.

Pour imprimer uniquement les fichiers inchangés, utilisez:

git ls-files -v | grep '^[[:lower:]]'

Pour embrasser votre programmeur paresseux, transformez-le en un alias git . Modifiez votre .gitconfigfichier pour ajouter cet extrait:

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

Maintenant, taper git ignoredvous donnera une sortie comme celle-ci:

h path/to/ignored.file
h another/ignored.file

42
git ls-files -v | grep ^ [az]
— Matt R

17
Mon système d'exploitation a apparemment une configuration de classement étrange, donc la commande de Matt n'a pas fonctionné pour moi. Voici ce que j'ai ajouté dans la [alias]section de mon .gitconfig:ignored = !git ls-files -v | grep "^[[:lower:]]"
— Abe Voelker

15
La raison pour laquelle [az] ne fonctionne pas est que le shell le développe en tant que caractère générique; si le répertoire courant contient un fichier qui correspond à ce modèle (c'est-à-dire une seule lettre minuscule), l'expansion de celui-ci est le nom du fichier. Essayez d'ajouter des guillemets, par exemple "[az]"
— DomQ

7
git ls-files -v | grep -e "^ [az]"
— Amir Ali Akbari

12
Les alias suggérés fonctionnent pour rechercher des fichiers inchangés dans le répertoire actuel et ci-dessous. Si vous voulez une liste de tous les fichiers "supposés inchangés" dans le référentiel, vous aurez besoin degit ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"
— Trebor Rude

65

Bon mot

git ls-files -v | grep "^[a-z]"

Utiliser des alias

À mon humble avis, git hiddenest préférable pour les fichiers marqués comme --assume-unchanged:

git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'

Voici une liste des alias associés que j'ai dans ~/.gitconfig:

[alias]
  hide = update-index --assume-unchanged
  unhide = update-index --no-assume-unchanged
  unhide-all = update-index --really-refresh
  hidden = !git ls-files -v | grep \"^[a-z]\"
  ignored = !git status -s --ignored | grep \"^!!\"

Pour le faire fonctionner dans les sous - répertoires et les arguments de support :

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
  ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"

Par exemple:

 # cd target
 # git ignored classes

À propos de l'état du fichier

Pour moi, la plupart des fichiers cachés sont marqués d'un drapeau h, bien qu'il existe en fait plusieurs autres drapeaux selon le manuel de git-ls-files-v:

-v
    Similar to -t, but use lowercase letters for files that are 
marked as assume unchanged (see git-update-index(1)).

À propos de git ls-files-t:

This option (-t) identifies the file status with the following tags 
(followed by a space) at the start of each line:

H   cached
S   skip-worktree
M   unmerged
R   removed/deleted
C   modified/changed
K   to be killed
?   other

1
— Beaux

1
Voici quelques variantes plus flexibles: hidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f"et ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f". Cela permet, par exemple, git ignored -- PATH1 PATH2de ne répertorier que les fichiers ignorés dans certains chemins (utile lorsque vous avez beaucoup de fichiers ignorés).
— sls

Merci pour l'alias
— MOHRE

22

Cette commande fonctionne de manière plus cohérente pour moi. Il n'imprimera que les fichiers répertoriés comme «supposés inchangés».

git ls-files -v|grep "^h"

Je l'ai utilisé beaucoup de fois dans différents environnements et cela fonctionne parfaitement.


5
Dans l'invite Windows, utilisez grep "^h"au lieu de guillemets simples
— beautifulcoder

7

Solution PowerShell, utilisant Select-String \ sls

git ls-files -v | sls -pattern ^h -casesensitive

3

Solution de ligne de commande Windows utilisant findstr :

git ls-files -v | findstr /B h
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.