web-dev-qa-db-fra.com

git ajoute uniquement les modifications modifiées et ignore les fichiers non suivis

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")
529
Steve

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 . " ").

741
manojlds

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
85
user877329

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
4
Karl Bielefeldt
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

1
Saurabh

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.

0
Erik Englund

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
0
Mike Q