2011-09-28 2 views
21

A un certo punto il mio repository git ha riorganizzato i suoi percorsi.Blame su una versione precedente di un file in un'altra posizione

Spesso voglio dare la colpa a un file in una revisione prima dello spostamento.

Qual è il git blame incantation per incolpare un file che non esiste nel repository attuale?

Ho provato:

> git blame new/path/to/file old_rev 
fatal: no such path ... in old_rev 

> git blame old/path/to/file old_rev 
fatal: cannot stat path ... in old_rev 

> git blame old_rev:old/path/to/file old_rev 
fatal: cannot stat path ... in old_rev 

Chiaramente potrebbe basta controllare old_rev e colpa il percorso appropriato, ma preferirei evitarlo.

risposta

20

È possibile utilizzare git blame --follow per rendere la colpa seguire i nomi.

Vedo anche i parametri sono nell'ordine sbagliato, provare quanto segue:

git blame old_rev -- old/path/to/file 
+0

qualsiasi ordine funziona se il file in questione non si è mosso, almeno nelle versioni più recenti git. A quanto pare, normalmente uso l'ordine giusto, ma quando stavo costruendo la domanda ho tagliato e incollato dal set sbagliato di tentativi. Comunque, grazie per la magia del - delimitatore, è quello che mi mancava! –