J'ai couru "git status" et, ci-dessous, quelques fichiers qui ont été modifiés/ou sous le titre "modifications non enregistrées pour la validation" . Il répertorie également certains fichiers non suivis que je veux ignorer (j'ai un ".gitignore" fichier dans ces répertoires).
Je veux mettre les fichiers modifiés dans le transfert afin de pouvoir les valider. Quand j'ai exécuté "git add.", Il a ajouté les fichiers modifiés ET les fichiers que je veux ignorer pour le stockage intermédiaire.
Comment puis-je ajouter uniquement les fichiers modifiés et ignorer les fichiers non suivis si le statut Git est présenté ci-dessous.
De plus, mes fichiers ".gitignore" fonctionnent-ils correctement?
$ git status
# On branch addLocation
# 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: someProject/path/domain/viewer/LocationDO.Java
# modified: someProject/path/service/ld/LdService.Java
# modified: someProject/path/service/ld/LdServiceImpl.Java
# modified: someProject/path/web/jsf/viewer/LocationFormAction.Java
# modified: someProject/war/WEB-INF/classes/message/viewer/viewer.properties
# modified: someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .metadata/
# someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")
Idéalement, votre .gitignore
devrait empêcher que les fichiers non suivis (et ignorés) soient affichés avec le statut, ajoutés à l'aide de git add
, etc. Je vous demanderais donc de corriger votre .gitignore
.
Vous pouvez faire git add -u
pour qu’il organise les fichiers modifiés et supprimés.
Vous pouvez également faire git commit -a
pour ne valider que les fichiers modifiés et supprimés.
Notez que si vous avez Git de version antérieure à 2.0 et que vous utilisez git add .
, vous devrez alors utiliser git add -u .
(voir " Différence entre" git add -A
"et" git add .
" ").
Cela a fonctionné pour moi:
#!/bin/bash
git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`
Ou même mieux:
$ git ls-files --modified | xargs git add
Vous n'avez pas indiqué quelle est actuellement votre .gitignore
, mais un .gitignore
avec le contenu suivant dans votre répertoire racine devrait faire l'affaire.
.metadata
build
git commit -a -m "message"
-a: inclut tous les fichiers actuellement modifiés/supprimés dans cette validation. Gardez toutefois à l'esprit que les nouveaux fichiers non suivis ne sont pas inclus.
- m: Définit le message du commit
Je ne sais pas s'il s'agit d'une fonctionnalité ou d'un bug, mais cela a fonctionné pour nous:
git commit '' -m "Message"
Notez la liste de fichiers vides ''. Git l'interprète pour engager tous les fichiers suivis modifiés, même s'ils ne sont pas mis en scène, et ignorer les fichiers non suivis.
Il m'est arrivé d'essayer pour voir la liste des fichiers en premier:
git status | grep "modified:" | awk '{print "git add " $2}' > file.sh
cat ./file.sh
exécuter:
chmod a+x file.sh
./file.sh
Edit: (voir commentaires) .__ Cela pourrait être réalisé en une étape:
git status | grep modified | awk '{print $2}' | xargs git add && git status