Come faccio a visualizzare solo i file che si sarebbe impegnata?

C’è qualche modo per ottenere un elenco di file che saranno impegnati, quando digito il seguente?

git commit -m "my changes"

git status liste di troppo. Potrei togliere tutte le parole, ma preferirei di no. E non voglio essere detto circa il file non tracciati.

Ho provato

git ls-files -md

ma che non mostra i file che sono stati aggiunti di recente, ma non ancora impegnati.

Sto cercando lo stesso risultato che si otterrebbe da

svn status -q

Per esempio
$ svn status -q

Un file.py

M dir/database.py

M start.py

InformationsquelleAutor gene | 2009-11-29



4 Replies
  1. 30

    Questo è quello che stavo cercando. Grazie per notnoop per il piombo di cui avevo bisogno. Ho voluto postare la mia soluzione nel caso in cui aiuta gli altri.

    git diff HEAD  --name-only
    

    Dal momento che ho intenzione di fare

    git commit -s -F mesage.txt
    

    con i file trovati in prima linea.

    Il mio intento è quello di creare un piccolo sistema che ignora totalmente l’indice, ossia che non ho mai bisogno di fare git add. (Da quello che ho capito, l’indice è utile per la creazione di patch, che non è affatto la norma nel mio flusso di lavoro.)

    • non è meglio dire git diff --cached --name-only? il diff HEAD mostra i file ultimo impegnati e non spinto. il --cached una mostrerà i file che saranno impegnati, quando si esegue git commit
    • git diff --staged --name-only funziona anche. A seconda di come la si pensa su git è possibile che si desidera utilizzare, in scena sinonimo invece di –cached.
  2. 9

    Questo comando vi dirà che i file nel vostro indice/cache/area di gestione temporanea differire dall’attuale CAPO (e se sono aggiunte, modifiche o cancellazioni) che le modifiche che saranno impegnati, se si utilizza git commit senza percorsi espliciti o il -a opzione. Il formato è ragionevolmente simile a svn status uscita che si mostra.

    git diff --cached --name-status
    
  3. 5

    Si può provare:

    git diff --name-status
    

    Ottengo il seguente:

    $ git diff --name-status
    M       README.markdown
    

    Senza il file non tracciati.

    • Questo non è corretto. La domanda è, “che cosa sarà impegnata quando dico git commit -m message“. Questo dà le differenze tra l’opera albero e la cache che è più vicino a quello non essere commesso.
  4. 3

    So OP originale chiesto di evitare git status, ma ho sentito che questo sarebbe bello lasciare ai posteri (io.e le altre persone che non condividono OP prenotazioni).

    git status --porcelain | grep -v '^[ |??]' | sed -e 's/[A-Z] *//'
    

    Il mio ragionamento è che git status --porcelain sembra come se fosse stato costruito esattamente per questo tipo di dilemma…

    fonte: http://git-scm.com/docs/git-status.html

    MODIFICA:
    Si può scegliere di non utilizzare sed -e 's/[A-Z] *//' se si desidera mantenere git che modifica i tag davanti al nome di ogni file.

    • +1. Sono d’accordo che git status --porcelain può essere utilizzato in uno script. Io mi sono documentata tanto in stackoverflow.com/a/6978402/6309, dicendo che “La nuova opzione [--porcelain] rende il comando nativo del formato di output per emettere output che è più facile da gestire per la Porcellana.”
    • Questo non sembra per elencare i file che si sarebbe spinto durante un git push (e che sono stati messi in scena da un git add/commmit)

Lascia un commento