git: Comment append récursivement tous les fichiers dans une sous-arborescence de répertoires correspondant à un modèle de globule?

J’ai plusieurs fichiers .screen dans /xxx/documentation et ses sous-répertoires déjà suivis par Git.

Après avoir modifié un grand nombre de ces fichiers écran, je lance git add documentation/\\*.screen – comme indiqué par le premier exemple dans la documentation de git-add – pour mettre en scène ces fichiers, mais la commande échoue:

  fatal: pathspec 'documentation / \ *. screen' ne correspond à aucun fichier 

Ma commande est-elle mauvaise ou git a-t-il un bug?

C’est un bogue dans la documentation. Citer l’astérisque avec

  $ git add documentation / \ *. screen 

ou

  $ git add 'documentation / *. screen' 

pour obtenir le comportement que vous voulez.

Si, au contraire, vous souhaitez append des fichiers uniquement dans le répertoire en cours, utilisez

  $ git add * .screen 

MISE À JOUR: J’ai envoyé un correctif pour corriger le problème, maintenant corrigé à partir de la version 1.6.6.2.

J’ai essayé la réponse acceptée, mais cela n’a pas fonctionné pour moi … alors voici le mien au cas où quelqu’un voudrait faire son travail sans passer du temps à disséquer les divers aspects qui pourraient causer le problème:

 find documentation -name "*.screen" | xargs git add -u 

// l’option -u pour git-add ajoute à l’index uniquement les fichiers précédemment suivis et modifiés

Vous avez dit au shell de rechercher *.screen (c’est-à-dire exactement cette chaîne – qui n’existe pas – au lieu de ce que vous voulez “tous les fichiers se .screen par .screen ). .screen le \\ afin que le shell puisse faire pour toi.

C’est ce que je viens d’utiliser pour un problème similaire de git ajoutant tous les fichiers dans un répertoire:

 find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Pour la question initiale, la commande serait:

 find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Notez que je traite le cas où un nom de fichier entièrement spécifié contient des espaces. Thats pourquoi ma réponse. Modifier la partie avant la première | afin de choisir différents fichiers à append.

essayer

 git add ./documentation/*.screen 

git add * .java fonctionne pour que j’ajoute récursivement tous les fichiers java