annuler git update-index –assume-unchanged

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

git update-index --assume-unchanged

Maintenant, comment le défaises-ils pour qu’ils soient à nouveau regardés? (laisse l’appeler non-supposé)

Pour obtenir les fichiers / dossiers dir / und qui sont supposés être inchangés, exécutez ceci :

git update-index --no-assume-unchanged

Pour obtenir une liste des fichiers / répertoires assume-unchanged exécutez ceci :

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

S’il s’agit d’une commande que vous utilisez souvent, vous pouvez également envisager de lui atsortingbuer un alias. Ajoutez à votre global .gitconfig :

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

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

 git hide myfile.ext 

ou

 git unhide myfile.ext 

Cette ressource a été très utile

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

 git update-index --help 

Vous trouverez ici diverses options – comment gérer avec 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  

rétablira tous les fichiers ajoutés à la liste d’ignorations.

 git update-index --assume-unchanged  

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

Si vous voulez annuler tous les fichiers qui ont été appliqués, supposez qu’ils restnt inchangés avec n’importe quel statut, non seulement mis en cache (git les marque par caractère en minuscule), vous pouvez utiliser la commande suivante:

 git ls-files -v | grep '^[az]' | 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 '^[az]' filtrera les fichiers et sélectionnera uniquement les valeurs inchangées
  3. cut -c 3- supprime le statut et ne laisse que les chemins, en partant du 3ème caractère jusqu’à la fin
  4. tr '\012' '\000' remplacera le caractère de fin de ligne (\ 012) par un caractère nul (\ 000)
  5. xargs -0 git update-index --no-assume-unchanged transmettra tous les chemins séparés par un caractère nul à git update-index --no-assume-unchanged pour annuler

En ajoutant à la @adardesign de @adardesign , si vous souhaitez réinitialiser tous les fichiers ajoutés à assume-unchanged liste assume-unchanged en @adardesign qu’ils @adardesign 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, c’est-à-dire "h " , puis échappera à tous les espaces présents dans les noms de fichiers, et enfin || true || true empêchera la commande de se terminer prématurément si certains fichiers de la boucle contiennent des erreurs.

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 de shell …

Commandes de base

Pour réinitialiser un fichier supposé inchangé à la normale:

 git update-index --no-assume-unchanged  

Pour répertorier tous les fichiers supposés inchangés:

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

Pour réinitialiser tous les fichiers supposés inchangé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 inchangés dans un shell prenant en charge les alias (tels que bash), créez un alias tel que:

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

Pour les shells sans alias, un script pourrait faire l’affaire.

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

  1. Aller à la fenêtre de validation.
  2. Cliquez sur la liste déroulante nommée Modifications du répertoire de travail .
  3. Sélectionnez l’option Afficher les fichiers ignorés-inchangés .
  4. Cliquez avec le bouton droit sur le fichier que vous souhaitez dénoncer.
  5. Sélectionnez Ne pas supposer inchangé .

Vous avez terminé.