2012-08-27 28 views
9

Se abbiamo spostato un file in un'altra posizione o lo abbiamo rinominato, tutta la cronologia precedente viene persa in git log, a meno che non si utilizzi specificamente git log --follow. Penso che di solito, il comportamento previsto è che ci piacerebbe vedere anche la cronologia passata, non "tagliata" dopo la rinomina o lo spostamento, quindi c'è un motivo per cui git log non utilizza automaticamente il flag --follow?Perché git log non è impostato su git log --follow?

+2

Git 2.6+ (Q3 2015) proporrà 'git config log.follow true' per questo: si veda [mia risposta qui sotto] (http://stackoverflow.com/a/32039661/6309) – VonC

risposta

5

Presumibilmente è perché git log viene in genere utilizzato per visualizzare le cronologie di commit generali e non la cronologia di un singolo file o percorso. L'opzione --follow è rilevante solo se si sta guardando un singolo file (e non funziona quando si nomina più di un file). Dal momento che non è il caso più comune, non ha senso aggiungerlo come predefinito.

Se si vuole rendere un default per te stesso, si può sempre fare un alias:

git config --global alias.lf 'log --follow' 

ora si può fare git lf <filename> per ottenere il comportamento desiderato.

Nota: Se si vuole proporre il cambiamento che stai chiedendo alla mailing list e vedere cosa la gente pensa, si può fare che here. O, ancora meglio, potresti submit a patch!

+0

aha, quindi se si tratta di un singolo file, forse avrebbe senso impostare di default '--follow'. Il motivo per cui non segue più di un file è probabilmente dovuto a motivi di velocità? –

+0

@ 動靜 能量: Non voglio speculare, ma sembra improbabile. git ti permette di fare molte opzioni che sarebbero molto costose da calcolare (ad es. rebase complessi e così via). –

21

Nota: a partire da git 2.6 (Q3 2015), git log può seguire la cronologia per impostazione predefinita per un file!

Vedi commit 076c983 (08 luglio 2015) da David Turner (dturner-tw).
(fusa per Junio C Hamano -- gitster -- in commit 2dded96 03 ago 2015)

log: aggiungere "log.follow" variabile di configurazione

Le persone che lavorano su progetti con la storia per lo più lineare con frequenti rinomina di file intere potrebbero voler usa sempre "git log --follow" quando ispezioni la vita del contenuto che vive in un singolo percorso.

Teach il comando a comportarsi come se "--follow" è stata data dalla riga di comando quando log.follow variabile di configurazione è impostata e c'è uno (e uno solo) percorso sulla linea di comando.

git config log.follow true 
+0

Ottime notizie, grazie! – guettli

Problemi correlati