Question git n'ajoute que les modifications modifiées et ignore les fichiers non suivis


J'ai couru "git status" et voici quelques fichiers qui ont été modifiés / ou sous la rubrique "changements non mis en place pour commit". Il a également répertorié certains fichiers non suivis que je veux ignorer (j'ai un fichier ".gitignore" dans ces répertoires).

Je veux mettre les fichiers modifiés dans la mise en scène afin que je puisse les valider. Quand j'ai couru "git add.", Il a ajouté les fichiers modifiés et les fichiers que je veux ignorer à la mise en scène.

Comment puis-je ajouter uniquement les fichiers modifiés et ignorer les fichiers non suivis si présenté avec l'état git 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")

482
2017-08-19 16:40


origine


Réponses:


Idéalement, votre .gitignore devrait empêcher que les fichiers non suivis (et ignorés) soient affichés en statut, ajoutés en utilisant git add etc. Alors je vous demanderais de corriger votre .gitignore

Tu peux faire git add -u de sorte qu'il mettra en scène les fichiers modifiés et supprimés.

Vous pouvez aussi faire git commit -a pour ne valider que les fichiers modifiés et supprimés.

Notez que si vous avez Git de version avant 2.0 et utilisé git add ., alors vous auriez besoin d'utiliser git add -u . (Voir "Différence de "git add -A" et "git add ."").


662
2017-08-19 16:44



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

71
2018-03-16 13:55



Vous n'avez pas dit quel est votre .gitignore, mais un .gitignore avec le contenu suivant dans votre répertoire racine devrait faire l'affaire.

.metadata
build

4
2017-08-19 16:55



Il m'est arrivé d'essayer ceci afin que je puisse 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 les commentaires) Cela pourrait être réalisé en une étape:

    git status | grep modified | awk '{print $2}' | xargs git add && git status

0
2017-07-26 19:32