git add doar modificate modificările și ignora untracked fișiere

Am fugit "starea git" și enumerate mai jos sunt unele fisiere care au fost modificate/sau la rubrica "modificări nu au organizat pentru a comite". Este, de asemenea, enumerate unele untracked fișiere pe care doriți să ignore (am o ".gitignore" fișier în aceste directoare).

Vreau sa pun fisierele modificate în stadializarea atât pot să-i angajeze. Când am fugit "git add .", a adăugat fișierele modificate ȘI fișierele vreau să ignorăm pentru intermediere.

Cum adaug doar fișierele modificate și ignora untracked fișiere dacă este prezentat cu git status de mai jos.

De asemenea, sunt meu ".gitignore" fișierele de lucru în mod corespunzător?

$ 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")
Comentarii la întrebare (1)
Soluția

În mod ideal .gitignore ar trebui să împiedice untracked ( și ignorat )fișierele de a fi prezentat în stare, a adăugat folosind git addetc. Deci, aș dori să vă întreb pentru a corecta.gitignore`

Puteți face git add-u, astfel încât acesta va organiza modificate și șterse fișiere.

Puteți face, de asemenea, `git commit -o să se angajeze numai cele modificate și șterse fișiere.

Rețineți că, dacă aveți Git de versiune înainte de 2.0 si folosit git add ., atunci ai nevoie de a utiliza git add-u . (A se vedea "Diferența de "git add-O" și "git add .`"").

Comentarii (7)

Aceasta a lucrat pentru mine:

#!/bin/bash

git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`

Sau chiar mai bine:

$ git ls-files --modified | xargs git add
Comentarii (7)
git commit -a -m "message"

-o : Include toate în prezent modificate/șterse în această comis-o. Păstrați în minte, totuși, că untracked (nou) fișiere nu sunt incluse.

-m : Stabilește comis's mesaj

Comentarii (0)

Ai n't spune ce's, în prezent, ta .gitignore, ci un `.gitignore cu următorul cuprins în directorul rădăcină ar trebui să facă truc.

.metadata
build
Comentarii (2)

S-a întâmplat să încercați acest lucru, așa că am putea vedea lista de fișiere în primul rând:

git status | grep "modified:" | awk '{print "git add  " $2}' > file.sh

cat ./file.sh

executa:

chmod a+x file.sh
./file.sh 

Edit: (vezi comentariile) Acest lucru ar putea fi realizat într-un singur pas:

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

Nu sunt sigur dacă acest lucru este o caracteristică sau un bug, dar aceasta a lucrat pentru noi:

git commit &#39;&#39; m "Mesaj"

Notă gol file list ''. Git interpretează acest lucru să se angajeze tot modificat urmărite de fișiere, chiar dacă acestea nu sunt organizate, și să ignore untracked fișiere.

Comentarii (1)