web-dev-qa-db-fra.com

Annuler git update-index --skip-worktree

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.

109
Kevin Burke

Aha! Je veux simplement:

git update-index --no-skip-worktree <file>
143
Kevin Burke

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!

30
Stefan Anca

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
  1. git ls-files -v imprimera tous les fichiers avec leur statut
  2. grep -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 casse
  3. cut -c 3- enlèvera le statut et ne laissera que les chemins, en passant du 3ème caractère à la fin
  4. tr '\012' '\000' remplacera le caractère de fin de ligne (\ 012) par zéro (\ 000)
  5. 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 annuler
14
C0DEF52

Basé 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)
2
eXavier

Pour ceux qui utilisent Tortoise Git:

  1. Faites un clic droit sur le dossier ou sur le fichier spécifique, puis choisissez TortoiseGit > Check for modifications
  2. Ne cochez que 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)
  3. Faites un clic droit sur le fichier et choisissez Unflag as skip-worktree and assume-unchanged
0
user276648