Quand j'essaie de faire un --- git add * .erb (ou toute autre expression générique simple) git ne le reconnaît pas (eux). En remarque, je n'ai jamais fait cela auparavant, donc je suis sûr que c'est une erreur de débutant, mais je n'ai trouvé aucune aide dans d'autres SO posts ou la liste de diffusion des anciens de mon école, alors j'ai pensé ce poste peut être approprié.
Pour (un autre) exemple, git status me donne:
# modified: config/routes.rb
# modified: spec/models/question_spec.rb
Je voulais seulement mettre en scène le fichier des routes, j'ai donc essayé git add * s.rb et pas de dés. Je suis à la racine de l'application ... dois-je être dans le répertoire qui contient le ou les fichiers auxquels j'essaie d'appliquer l'expression générique? Ce serait douloureux, mais ... en fait ... ça a juste fonctionné.
J'espère que cela ne doit pas être un article séparé, mais existe-t-il un moyen plus simple d'utiliser des caractères génériques où vous n'avez pas besoin de cd dans le répertoire spécifique?
Mettez-le autour de guillemets simples. Cela devrait fonctionner.
git add '*s.rb'
MISE À JOUR
Après plus de tests, je découvre que je peux même faire git add *s.rb
sans citations. Cela pourrait bien fonctionner pour moi avec ma version git 1.7.10.4 (Mac OSX Lion, homebrew). Mon explication est que si l'expansion des caractères génériques Shell ne correspond à aucun fichier, elle fournirait l'argument non développé d'origine '* s.rb' à git add
.
sh-3.2$ git status
#
# modified: config/routes.rb
# modified: spec/models/products_spec.rb
#
Maintenant oui git add
sans citations.
sh-3.2$ git add *s.rb
Étonnamment, cela fonctionne!
sh-3.2$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: config/routes.rb
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: spec/models/products_spec.rb
#
Si le motif générique ne correspond à aucun fichier, git affichera cette erreur.
sh-3.2$ git add *x.rb
fatal: pathspec '*x.rb' did not match any files
Je ne peux pas faire fonctionner les globes récursifs pour moi car ma version de bash est trop ancienne. Donc ce que je fais c'est
find . -name "*.rb" | xargs git add
Fonctionne comme un régal et je peux y ajouter d'autres filtres si j'ai besoin - donc si je veux ajouter tous les fichiers sauf un, je peux le faire.
find . -name "*.rb" | grep -v "not_me.rb" | xargs git add
Il y a quelques autres cas qui peuvent être utiles.
Si vous souhaitez simplement ajouter des fichiers qui existent déjà dans votre référentiel, vous pouvez
git add -u .
Si vous voulez tout ajouter,
git add .
D'après mon expérience (il me manque peut-être une option ou quelque chose), git add ne regarde que les fichiers du répertoire et du sous-répertoire actuels. Donc, si vous voulez tout ajouter, allez dans le répertoire racine du dépôt. Bien que si le dépôt est vraiment important, cela pourrait prendre un certain temps, surtout si vous ne passez pas le drapeau -u.