web-dev-qa-db-fra.com

Annuler git update-index --assume-unchanged <fichier>

La façon dont vous Git ignore regarder/suivre un répertoire/fichier particulier. vous venez de lancer ceci:

git update-index --assume-unchanged <file>

Maintenant, comment pouvez-vous l'annuler pour qu'ils soient à nouveau visionnés? (Appelons cela un-assume.)

374
adardesign

Pour obtenir les fichiers/annulations de/show dir configurés pour assumer-inchangé, exécutez ceci :

git update-index --no-assume-unchanged <file>

Pour obtenir une liste des fichiers/répertoires qui sont assume-unchanged, lancez ceci :

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

491
adardesign

Si vous utilisez souvent cette commande, vous pouvez également envisager de lui attribuer un alias. Ajoutez à votre .gitconfig global:

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged

Après avoir enregistré ceci dans votre .gitconfig, vous pouvez exécuter une commande de nettoyage.

git hide myfile.ext

ou

git unhide myfile.ext

Cette ressource était très utile

77
adswebwork

la fonction git update-index a plusieurs options que vous pouvez trouver en tapant comme ci-dessous:

git update-index --help

Vous trouverez ici diverses options - comment utiliser la fonction update-index. 

[si vous ne connaissez pas le nom du fichier]

git update-index --really-refresh 

[si vous connaissez le nom du fichier]

git update-index --no-assume-unchanged <file>

annulera tous les fichiers ajoutés à la liste des ignorés.

git update-index --assume-unchanged <file>
36
Ankit Vishwakarma

Je suppose (heh) que vous vouliez dire --assume-unchanged, puisque je ne vois aucune option --assume-changed. L'inverse de --assume-unchanged est --no-assume-unchanged.

32
hobbs

Si vous voulez annuler tous les fichiers qui ont été appliqués, aucun statut ne sera modifié, pas seulement mis en cache (git les marque par caractère en minuscule), vous pouvez utiliser la commande suivante:

git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
  1. git ls-files -v imprimera tous les fichiers avec leur statut
  2. grep '^[a-z]' va filtrer les fichiers et sélectionner seulement supposer inchangé
  3. cut -c 3- enlèvera le statut et ne laissera que les chemins, en passant du 3ème caractère à la fin
  4. tr '\012' '\000' remplacera le caractère de fin de ligne (\ 012) par zéro (\ 000)
  5. xargs -0 git update-index --no-assume-unchanged passera tous les chemins séparés par zéro caractère à git update-index --no-assume-unchanged pour annuler
15
C0DEF52

Pour synthétiser les excellentes réponses originales de @adardesign, @adswebwork et @AnkitVishwakarma et les commentaires de @Bdoserror et @Retsam, avec des liens de documentation supplémentaires et un alias Shell ...

Commandes de base

Pour réinitialiser un fichier qui est supposons-inchangé retourne à la normale:

git update-index --no-assume-unchanged <file>

To lister tous les fichiers supposés inchangés:

git ls-files -v | grep '^[a-z]' | cut -c3-

Pour réinitialiser tous les fichiers assumer-non modifiés à la normale:

git update-index --really-refresh

Raccourcis

Pour faciliter l’exécution de ces tâches courantes dans git, ajoutez la section suivante à .gitconfig pour votre utilisateur (par exemple, ~/.gitconfig sur un système * nix ou macOS):

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged
    unhide-all = update-index --really-refresh
    hidden = ls-files -v

Pour faciliter l’exécution de la liste de tous les fichiers supposés non modifiés dans un shell prenant en charge alias (tel que bash), créez un alias tel que:

alias git-hidden="git hidden | grep '^[a-z]' | cut -c3-"

Pour les shells sans pseudonyme, un script pourrait faire l'affaire.

13
Will Cain

En ajoutant à la réponse de @adardesign, si vous souhaitez réinitialiser tous les fichiers ajoutés à la liste assume-unchanged à no-assume-unchanged en une fois, vous pouvez procéder comme suit:

git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true

Cela supprimera simplement les deux caractères générés par grep i.e. "h ", échappera à tout espace éventuellement présent dans les noms de fichiers, et finalement || true empêchera la commande de se terminer prématurément au cas où certains fichiers de la boucle contiendraient des erreurs.

11
sagunms

Si vous utilisez Git Extensions , suivez les étapes ci-dessous:

  1. Aller à la fenêtre de validation. 
  2. Cliquez sur le menu déroulant nommé Répertoire de travail modifié .
  3. Sélectionnez Afficher les fichiers non modifiés option.
  4. Faites un clic droit sur le fichier que vous souhaitez annuler.
  5. Sélectionnez Ne présumez pas inchangé .

Vous avez terminé.

2
Shivang Gupta

Rien ici qui n'est pas couvert. Mais voudrait ajouter mes 2 cents. Parfois, je lance une compilation qui change beaucoup de fichiers, puis je veux travailler sur quelque chose. Cette commande m'aide donc beaucoup.

git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`

J'espère que quelqu'un d'autre trouvera cela utile aussi.

0
Tyagi Akhilesh