Il y a quelque temps, j'ai fait cela pour ignorer les modifications apportées à un fichier suivi par git:
git update-index --skip-worktree <file>
Maintenant, je veux réellement valider les modifications de ce fichier dans la source. Comment annuler les effets de skip-worktree
?
Réponses:
Ah! Je veux simplement:
la source
Selon http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , utilisez
git ls-files -v
pour voir les fichiers "supposer inchangé" et "skip-worktree" marqués d'une lettre spéciale. Les fichiers "skip-worktree" sont signalés par
S
.Edit : Comme @amacleod l'a mentionné, créer un alias pour lister tous les fichiers cachés est une bonne astuce à avoir pour que vous n'ayez pas besoin de vous en souvenir. J'utilise
alias hidden="git ls-files -v | grep '^S'"
dans mon .bash_profile. Cela fonctionne très bien!la source
git ls-files -v | grep '^S'
pour lister uniquement les fichiers que j'ai "cachés" avec skip-worktree. J'espérais faire un alias "caché" pour cette commande, mais mettre une redirection de tube dans l'alias ne semblait pas fonctionner.!
. Comme cela[alias] ignored = !git ls-files -v | grep "^S"
testé, fonctionne.grep
, je ne sais pas. Cela dépend de votre coquille, je suppose. Git Bash vient avecgrep
, je pense.'
n'a pas fonctionné mais"
a fonctionné, c'estgit ls-files -v | grep "^S"
Si vous souhaitez annuler tous les fichiers qui ont été appliqués ignorer l'arbre de travail, vous pouvez utiliser la commande suivante:
git ls-files -v
imprimera tous les fichiers avec leur étatgrep -i ^S
filtrera les fichiers et sélectionnera uniquement ignorer l'arbre de travail (S) ou ignorer l'arbre de travail et supposera inchangé (s), -i signifie ignorer la cassecut -c 3-
supprimera 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 le caractère zéro (\ 000)xargs -0 git update-index --no-skip-worktree
passera tous les chemins séparés par zéro caractère àgit update-index --no-skip-worktree
pour annulerla source
Basé sur la réponse @ GuidC0DE, voici une version pour Powershell (j'utilise posh-git )
Et pour référence également la commande inverse pour masquer les fichiers:
la source
Pour ceux qui utilisent Tortoise Git:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
. Vous devriez voir le fichier que vous avez ignoré (ou tous les fichiers que vous avez ignorés, si vous avez fait un clic droit sur le dossier)Unflag as skip-worktree and assume-unchanged
la source
Pour tous ceux qui aiment les alias Bash, voici mon ensemble pour les gouverner tous (basé sur C0DEF52)
la source
Cette réponse s'adresse aux personnes moins techniques utilisant Windows.
Si vous ne savez pas sur quels fichiers vous avez cliqué sur "skip-worktree", utilisez:
Pour résoudre votre problème:
Vous pouvez aller dans les fichiers -> clic droit -> restaurer à une version précédente -> cliquer sur l'onglet "git" en haut -> décocher la case "skip-worktree" -> cliquer sur "Appliquer" en bas.
Si les fichiers sont trop nombreux pour être corrigés à la main, vous devrez vous référer aux autres réponses.
la source