Est-ce que je ne comprends pas comment fonctionne git grep --cached foo
? Exécution git version 1.6.4.4 ou 1.6.5.2, git grep --cached foo
renvoie exactement la même chose que git grep foo
.git grep --cache
Je pensais que cela fonctionnerait comme git diff --cached
, en recherchant uniquement les changements dans la zone de transit. C'est certainement ce que le man page me porte à croire:
git diff [--options] --cached [<commit>] [--] [<path>…]
Ce formulaire est pour afficher les modifications que vous avez mis en scène pour la prochaine validation par rapport au nom
<commit>
. En règle générale, vous voulez comparer avec la dernière validation, donc si vous ne donnez pas<commit>
, la valeur par défaut estHEAD
. SiHEAD
n'existe pas (, par exemple, branches non acquises) et<commit>
n'est pas indiqué, il montre toutes les modifications par étapes.--staged
est un synonyme de--cached
.
Est-ce juste un bogue, ou existe-t-il un moyen alternatif/meilleur pour trouver les changements sur le point d'être commis qui mentionnent foo?
git diff --cached | grep foo
La commande me donne la moitié de ce que je veux ci-dessus, mais il perd que le contexte de fichier le changement apparaît dans.
MISE À JOUR
Il semble que j'ai une erreur de concept ce que --cached
regarde. Il semble qu'il cherche l'état de l'arbre en supposant que la zone de transit est appliquée. Cela a du sens, maintenant que j'y pense. Ce que je veux pour chercher dans est la différence, pas l'arbre complet. Plus précisément, je veux savoir la liste de tous les fichiers (je ne me soucie pas des numéros de ligne ou de contexte) que je suis sur le point de commettre SpecialLog(...)
, donc je peux aller éditer ces fichiers et supprimer SpecialLog
. Donc oui, je peux juste faire git diff --cached
et chercher dans le pager pour SpecialLog
, mais alors pour les changements énormes dans un seul fichier, il y a beaucoup de doublons et ce n'est pas évident quel fichier je regarde.
Merci. Vous m'avez aidé à comprendre mon erreur de concept (voir mise à jour dans la description). Donc, ce que je cherche vraiment, c'est quelque chose qui combine git diff et grep. Le pager fonctionne, mais ce n'est pas ce que je cherche;) –
Voir la mise à jour. –
Doux! C'est exactement ce que je voulais! –