2013-02-08 18 views
5

Quando refactor la classe in IntelliJ il git perde la traccia del vecchio log del file? C'è un modo per refactoring del file in modo che mantiene il registro, o mi manca qualcosa?Come mantenere il registro delle modifiche nei file git durante il refactoring in IntelliJ?

Sto verificando il registro del file nel SourceTree, ma immagino che sia lo stesso per tutto.

+0

Git è il sistema di controllo versione da solo. Perché è necessario archiviare i log di refactoring? – madhead

+0

In modo che quando controllo la cronologia del file posso vedere tutte le modifiche. Quando faccio git mv che viene visto, ma quando intelliJ lo rifiuta non si vede – ThanksBro

risposta

2

Sposta/Rinomina is handled automatically by Git e il registro deve essere conservato se git ha rilevato che si trattava effettivamente di una mossa. Non importa se si rinomina da IDEA, terminal o file manager.

Vedere anche Why does git not "track" renames? e comments in the related bug report.

+3

Nella segnalazione di bug sembra che funzioni quando refactoring nel terminale, e non funziona quando refactoring in IntelliJ. Grazie, continuerò su Youtrack – ThanksBro

0

Questo approccio, anche se probabilmente non ciò che si desidera ascoltare, ha contribuito a git rilevare rinomina (e in definitiva capire la vera storia del file) nel corso di una abbastanza grande riconfezionamento che stavo facendo (rinominando pacchetto com.something a com.somethingelse con ~ 300 file all'interno it):

  1. Eseguire la ridenominazione solo all'esterno di IntelliJ utilizzando "git mv" ad esempio "git mv MyProject\src\main\java\com\something MyProject\src\main\java\com\somethingelse"
  2. Commit
  3. fare i cambiamenti di riconfezionamento nei file di origine utilizzando un normale IntelliJ testo sostituire - Edit > Find > Replace in path e sostituire tutte le occorrenze di com.something con com.somethingelse.
  4. Commit