Y a-t-il un moyen d’utiliser des caractères génériques avec git checkout?

Ce que je voudrais faire est de vérifier un seul fichier ou un ensemble de fichiers avec un nom commun comme celui-ci

git checkout myBranch */myFile.md et

git checkout myBranch -- */*Test* (pas sûr de la partie ‘-‘)

au lieu de

git checkout myBranch src/main/java/a/deep/package/structure/myFile.md et

git checkout myBranch src/test/java/a/deep/package/structure/TestOne.java
git checkout myBranch src/test/java/a/deep/package/structure/TestTwo.java
git checkout myBranch src/test/java/a/deep/package/structure/resources/TestData.sql

Je sais qu’il existe des fonctionnalités génériques limitées pour certaines commandes git telles que diff et add mais elles n’ont rien trouvé pour le checkout . Y a-t-il un moyen?

EDIT: J’utilise git 1.7.9.5 sous Linux. Une combinaison de travail des commandes git et shell serait également acceptable.

    Git traite les caractères génériques, en utilisant fnmatch (3) . Voir l’entrée pathspec dans le glossaire Git .

    Mais pour être sûr que git puisse voir les caractères génériques, ils doivent être échappés sinon votre shell les développera en premier. Généralement, j’utilise des caractères génériques entre guillemets simples:

     git checkout myBranch -- '*/myFile.md' 

    Les caractères génériques sont appliqués au nom entier, répertoires inclus.

    Comme vous pouvez le voir dans la documentation, le pathspec permet également la signature magique qui modifie la manière d’interpréter le pathspec. Par exemple, vous pouvez avoir des chemins insensibles à la casse avec icase (vous pouvez taper ':(icase)*readme*' pour trouver tous vos readme).

    Je cite le commentaire de @ bambams ici, au cas où vous auriez des problèmes avec Windows:

    Cela ne fonctionne pas pour moi dans Windows avec 2.8.1.windows.1 et j’utilise Git depuis le shell cmd.exe, donc pas de remplissage intégré. Il y a cependant une solution si vous êtes dans un état désolé. Combinez git diff --name-only et xargs pour atteindre votre objective:

     git diff --name-only  -- ... | xargs git checkout  

    Git ne traite pas du caractère générique, mais de votre shell.

    Essaye ça :

     git checkout myBranch **/myFile.md 

    et

     git checkout myBranch **/*Test* 

    Avec le ** , votre shell recherchera les fichiers dans tous les sous-répertoires à partir du répertoire de travail en cours.

    Aucune des autres réponses n’a fonctionné pour moi, mais le commentaire de bambams a fonctionné. Je l’ai fait dans une fonction bash qui accepte deux arguments. Usage:

    gitcheckout myBranch ‘* fichier *’

     gitcheckout() { GIT_DIR=$(git rev-parse --git-dir 2>/dev/null); pushd .; cd $GIT_DIR/../; git diff --name-only $1 -- $2 | xargs git checkout $1 --; popd; }