11
votes

GIT: Je veux instaurer tous les fichiers correspondant à un certain motif

Je voudrais exécuter xxx

mais cette erreur est sortie.

Je pense que je dois utiliser un tuyau, mais je ne sais pas comment faire ça .

merci!


1 commentaires

Remarque: Ces fichiers ont été mis en scène comme supprimés. c'est-à-dire que les fichiers ne sont plus dans mon répertoire de travail. Donc, je suppose que j'ai besoin de quelque chose comme Git Checkout * .foo


8 Réponses :


9
votes
for i in `git status --porcelain | grep '^D.*\.foo$' | sed 's/^D \+//'`; do
    git reset HEAD "$i"
    git checkout "$i"
done

5 commentaires

Merci. Maintenant, le changement mis en scène était de supprimer ces fichiers. Alors, cela fonctionnera-t-il toujours? Le fichier est en fait déjà supprimé dans le répertoire


Non, ça ne fonctionnera pas. Je vais mettre à jour ma réponse avec une nouvelle commande.


Ahhhhhh, je veux réellement exécuter cela sur des fichiers avec modèle * .gen.cs


Hmm, cela devrait fonctionner. Pouvez-vous vérifier que Statut git --porcelain sortira ces fichiers?


git réinitialiser la tête ; Git Checkout est équivalent à Git Checkout Head .



6
votes

Si vous utilisez PowerShell, ce qui suit fonctionnera. xxx


0 commentaires

2
votes

dans une application GIT GUI comme Smartgit Je filtrerais les fichiers affichés par le motif *. FOO , appuyez sur Ctrl + A pour sélectionner tous les fichiers filtrés et appelez la commande onctuelle.


0 commentaires

4
votes

Cela devrait fonctionner dans Cygwin et UNIX env

git reset $(git diff --name-only --cached | grep *.foo)


0 commentaires

1
votes

E.g. Je veux faire correspondre toutes les "migrations" dans le chemin.

GIT DIFF -NAME -NAME SEULEMENT | Grep Migrations | Xargs Git Checkout


0 commentaires

0
votes

Si vous souhaitez EM> Checkout em> (Annuler les modifications) des non planifié les fichiers modifiés correspondant à un motif donné, cela fonctionne:

MacOS: P>

git checkout $(git st -s | sed -r 's/^.{2}//' | grep '\.foo$')


0 commentaires

1
votes

L'espace blanc dans le nom de fichier était de causer des problèmes à l'aide des approches Git Diff CODE>, mais les suivantes ont fonctionné:

find ./ -name "*.foo" -exec git reset {} \;


0 commentaires

2
votes

Utilisez simplement GIT RESET * MYPATTERN *

EDIT: Essayez aussi Restauration GIT , mais soyez très prudent comme il semble qu'il semble être buggé au moment de la rédaction.


0 commentaires