Il y a quelque temps, j'ai fait ceci 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
?
Merci, Kevin.
Aha! Je veux simplement:
git update-index --no-skip-worktree <file>
Selon http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , utilisez
git ls-files -v
pour voir les fichiers "suppose inchangé" et "skip-worktree" marqué d’une lettre spéciale. Les fichiers "skip-worktree" sont marqués avec S
.
Edit: Comme mentionné dans @amacleod , créer un alias répertoriant tous les fichiers cachés est une bonne astuce pour ne pas avoir à vous en souvenir. J'utilise alias hidden="git ls-files -v | grep '^S'"
dans mon fichier .bash_profile. Cela fonctionne très bien!
Si vous souhaitez annuler tous les fichiers qui ont été appliqués, utilisez la commande suivante:
git ls-files -v | grep -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
git ls-files -v
imprimera tous les fichiers avec leur statutgrep -i ^S
va filtrer les fichiers et sélectionner uniquement ignorer les arbres de travail ou ignorer les arbres de travail et supposer que les modifications ne sont pas modifiées, -i signifie ignorer les caractères sensibles à la cassecut -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-skip-worktree
passera tous les chemins séparés par zéro caractère à git update-index --no-skip-worktree
pour annulerBasé sur la réponse @ GuidC0DE, voici une version pour Powershell (j'utilise posh-git )
git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})
Et pour référence aussi la commande opposée pour cacher les fichiers:
git update-index --skip-worktree $(git ls-files --modified)
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 cliqué avec le bouton droit sur le dossier)Unflag as skip-worktree and assume-unchanged