La façon dont vous Git ignorez regarder / suivre un répertoire / fichier particulier. vous exécutez simplement ceci:
git update-index --assume-unchanged <file>
Maintenant, comment pouvez-vous l'annuler pour qu'ils soient à nouveau regardés? (Appelons cela un-assumer.)
git
version-control
git-index
adardesign
la source
la source
Réponses:
Pour obtenir annuler / afficher les répertoires / fichiers qui sont définis pour supposer inchangés, exécutez ceci :
git update-index --no-assume-unchanged <file>
Pour obtenir une liste des répertoires / fichiers
assume-unchanged
exécutés, procédez comme suit :git ls-files -v|grep '^h'
la source
git ls-files -v|grep '^h'|cut -c3-
, qui vous donnera juste les noms de fichiers, sans le préfixe "h".assume-unchanged
utilisez, utilisez-lesgit update-index --really-refresh
. Avec cette commande, vous n'avez pas besoin de rechercher d'abord les fichiersgit ls-files
.S'il s'agit d'une commande que vous utilisez souvent, vous pouvez également envisager d'avoir un alias. Ajoutez à votre global
.gitconfig
:Comment définir un alias (si vous ne le savez pas déjà):
Exemple:
Après avoir enregistré cela dans votre
.gitconfig
, vous pouvez exécuter une commande plus propre.ou
Cette documentation git a été très utile.
Selon les commentaires, c'est aussi un alias utile pour savoir quels fichiers sont actuellement cachés:
la source
hidden = ! git ls-files -v | grep '^h' | cut -c3-
La fonction git update-index a plusieurs options que vous pouvez trouver en tapant comme ci-dessous:
Vous trouverez ici diverses options - comment gérer avec la fonction update-index.
[si vous ne connaissez pas le nom du fichier]
[si vous connaissez le nom du fichier]
rétablira tous les fichiers qui ont été ajoutés dans la liste des ignorés.
la source
git update-index --no-assume-unchanged <file>
m'a sauvé la vie .. ok, je pouvais à nouveau synchroniser le dossier, mais je voulais une "vraie" solution à ce problème.Je suppose (heh) que vous vouliez dire
--assume-unchanged
, car je ne vois aucune--assume-changed
option. L'inverse de--assume-unchanged
est--no-assume-unchanged
.la source
Pour synthétiser les excellentes réponses originales de @adardesign, @adswebwork et @AnkitVishwakarma, et les commentaires de @Bdoserror, @Retsam, @seanf et @torek, avec des liens de documentation supplémentaires et des alias concis ...
Commandes de base
Pour réinitialiser un fichier qui est supposé inchangé revenir à la normale:
Pour répertorier tous les fichiers inchangés:
Pour réinitialiser tous les fichiers inchangés à la normale:
Remarque: Cette commande qui a été répertoriée ailleurs ne semble plus réinitialiser tous les fichiers inchangés (je crois qu'elle l'a utilisée et l'a précédemment répertoriée comme solution):
Raccourcis
Pour rendre ces tâches courantes faciles à exécuter dans git, ajoutez / mettez à jour la section d' alias suivante
.gitconfig
pour votre utilisateur (par exemple~/.gitconfig
sur un système * nix ou macOS):la source
git hidden
, vous pouvez obtenir le même effet sans alias ni scripts shell, en utilisant!
comme ceci:hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
ne supprime pas (ou ne supprime plus, peut-être une fois) les indicateurs supposés inchangés des fichiers d'index.Si vous souhaitez annuler tous les fichiers qui ont été appliqués supposent inchangés avec n'importe quel état, non seulement mis en cache (git les marque par caractère en minuscules), vous pouvez utiliser la commande suivante:
git ls-files -v
imprimera tous les fichiers avec leur statutgrep '^[a-z]'
filtrera les fichiers et sélectionnera seulement supposé inchangécut -c 3-
supprimera le statut et ne laissera que des chemins, coupant du 3ème caractère à la fintr '\012' '\000'
remplacera le caractère de fin de ligne (\ 012) par un caractère nul (\ 000)xargs -0 git update-index --no-assume-unchanged
passera tous les chemins séparés par un caractère zérogit update-index --no-assume-unchanged
pour annulerla source
Pour ajouter à
@adardesign
la réponse de, si vous souhaitez réinitialiser tous les fichiers qui ont été ajoutés à laassume-unchanged
listeno-assume-unchanged
en une seule fois, vous pouvez effectuer les opérations suivantes:Cela supprimera simplement les deux caractères sortis de grep, c'est-à
"h "
- dire , échappera à tous les espaces qui peuvent être présents dans les noms de fichiers, et|| true
empêchera finalement la commande de se terminer prématurément au cas où certains fichiers de la boucle contiennent des erreurs.la source
Si vous utilisez des extensions Git , suivez les étapes ci-dessous:
Vous avez terminé.
la source
Rien ici qui n'est pas couvert. Mais j'aimerais ajouter mes 2 cents. Parfois, je lance une build et cela change beaucoup de fichiers, puis je veux travailler sur quelque chose, donc cette commande m'aide beaucoup.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
J'espère que quelqu'un d'autre le trouvera également utile.
la source
.gitignore
pour ignorer vos artefacts de construction..gitignore
mais c'est parfois, selon mon expérience ne suffit pas. Mais je comprends le contexte dans lequel vous dites cela.Aucune des solutions n'a fonctionné pour moi dans Windows - il semble utiliser des majuscules
H
plutôt queh
pour l'état du fichier et la commande grep nécessite un caret supplémentaire car^
représente également le début de la ligne ainsi que la négation du caractère suivant.Solution Windows
git ls-files -v | grep '^^H'
pour répertorier tous les fichiers non mis en cachegit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
pour annuler les fichiers en ignorant tous les fichiers qui ont été effectués viaupdate-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
pour annuler les fichiers en ignorant tous les fichiers qui ont été effectués viaupdate-index --assume-unchanged
git ls-files -v | grep '^^H'
pour répertorier à nouveau tous les fichiers non mis en cache et vérifier si les commandes ci-dessus ont fonctionné - cela ne devrait plus rien retournerla source
Si vous utilisez eclipse, vous trouverez peut-être utiles les éléments suivants:
la source