Sono relativamente nuovo con Git, ho usato Subversion prima.
Ho notato che la maggior parte dei front-end grafici git e dei plug-in IDE non sembrano essere in grado di visualizzare la cronologia di un file se il file è stato rinominato. Quando uso
git log --follow
sulla riga di comando, posso vedere l'intero registro tra i nomi.
Secondo Linus Torvalds l'opzione --follow è un piacere "SVN noob", gli utenti git seri non lo usano:
--follow è un hack totale, pensato per soddisfare solo gli utenti ex-SVN che non hanno mai saputo nulla di cose come la genitorialità o dei bei grafici di revisione.
Non è del tutto fondamentale, ma l'attuale implementazione di "--follow" è in realtà una cosa di preelaborazione rapida collegata alla logica del camminare di revisione, piuttosto che essere qualcosa di veramente integrale.
È stato letteralmente progettato come un piacere "SVN noob", non come una cosa "funzionalità git reale". L'idea era che ti saresti allontanato dalla mentalità (spezzata) di pensare che rinominasse la materia nel quadro generale.
La mia domanda : in che modo gli utenti hardcore git tra di voi ottengono la cronologia di un file quando è stato rinominato? Qual è il modo "reale" per farlo?
/bin/mv oldfile newfile
), ma poi si git add newfile; git rm oldfile
, il risultato è indistinguibile da quello di git mv oldfile newfile
.
git log --follow
migliora un po 'con git 2.9 (giugno 2016): vedi la mia risposta di seguito
--color-moved
quando diff
.
git mv oldfile newfile
non provoca la ridenominazione da registrare a tutti - è lo stesso che l'eliminazione di un file e aggiungendo un altro. git risolve solo i nomi e le copie dallo stato dell'albero ad ogni commit dopo il fatto.