2012-07-18 13 views
126

Dire che ho un file foo.js che è stato impegnato qualche tempo fa. Vorrei trovare semplicemente il commit in cui questo file è stato aggiunto per la prima volta.Trova commit dove è stato aggiunto il file

Dopo aver letto le risposte e il mio armeggiare, questo funziona per me

git log --follow --diff-filter=A --find-renames=40% foo.js 
+6

Dang, fratello. Hai una reputazione di 1 e un sacco di cose buone sul tuo profilo. Devi aver fatto qualche trolling per ottenere downvotes da qualche parte. –

+0

Il suo account è stato "temporaneamente" sospeso per ... diversi anni, a quanto pare. – msanford

risposta

203

Ecco semplice, "pura git" modo per farlo, non gasdotto bisogno:

git log --diff-filter=A -- foo.js 

Controlla i documenti, puoi fare la stessa cosa per Cancellato, Modificato, ecc.

Ho un alias utile per questo perché io sempre dimenticarlo:

git config --global alias.whatadded 'log --diff-filter=A' 

In questo modo è più semplice:

git whatadded -- foo.js 
+17

+1! Tuttavia, il mio file era in una sottocartella, quindi ha funzionato solo dopo aver aggiunto un asterisco nella parte anteriore 'git log --diff-filter = A - * subfolder/foo.js' – Geo

+2

Come funziona sui file che vengono uniti da altri rami, ma che non sono stati necessariamente aggiunti al ramo che viene unito dall'utente che esegue l'unione? – g33kz0r

13
git log --oneline -- foo.js | tail -n 1 
+1

Sarebbe bello avere '--follow'. –

0

Il seguente forse non è del vostro interesse, ma penso che vi aiuterà in futuro e fa parte di debug ecosistema in Git:

È possibile utilizzare git-colpa per mostrare ciò che la revisione e l'ultima modificato ogni riga di un file especifiqly Annotazione file, visitare https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git

es. Incolpare la colpa -L 174,190 xx.py

+0

Puoi spiegare per favore cosa fanno tutti gli operandi? Mi rendo conto che hai fornito un link al file rtfm pertinente, ma un po 'di delucidazione renderebbe il tuo post un negozio one-stop. – rossmcm

+0

Come dice il libro Pro-Git Se rintracci un bug nel tuo codice e vuoi sapere quando è stato introdotto e perché, l'annotazione dei file è spesso il tuo miglior strumento. Ti mostra quale commit è stato l'ultimo a modificare ogni riga di qualsiasi file, quindi questo esempio che ho mostrato usa l'opzione -L per limitare l'output alle righe da 174 a 190 e l'ultima cosa è solo il file di destinazione che vuoi controllare (xx.py) in questo caso un file python @rossmcm – Reidel

Problemi correlati