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.)
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'
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
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>
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
.
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
git ls-files -v
imprimera tous les fichiers avec leur statutgrep '^[a-z]'
va filtrer les fichiers et sélectionner seulement supposer inchangécut -c 3-
enlèvera le statut et ne laissera que les chemins, en passant du 3ème caractère à la fintr '\012' '\000'
remplacera le caractère de fin de ligne (\ 012) par zéro (\ 000)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 annulerPour 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.
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.
Si vous utilisez Git Extensions , suivez les étapes ci-dessous:
Vous avez terminé.
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.