2012-07-19 13 views
6

Ho tre file Shell-ijk-ArrayList.java, Shell-ijk-Vektor.java e Shell-ikj-ArrayList.java in questo git-repository. Li ho "uniti" manualmente a MatrixMultiplication.java. Ora mi piacerebbe sbarazzarmi degli altri tre, ma voglio mantenere la loro storia. Qual è il modo migliore per farlo?Posso unire file in git?

ho trovato git merge-file, ma quando provo

git merge-file MatrixMultiplication.java Shell-ijk-ArrayList.java Shell-ijk-Vektor.java 

ottengo

error: Could not stat MatrixMultiplication.java 

potrebbe semplicemente rimuovere i vecchi file con git rm, ma poi mi perdere la storia, vinto' io?

Potrei anche spostarlo con git mv, ma quale sarebbe una buona cartella per i file obsoleti?

+0

Uniscili in che modo esattamente? Questi file hanno un aspetto molto diverso da uno all'altro. –

risposta

2

Mi sembra che tu stia unendo file diversi con logica separata in un unico file? Questo non è il motivo per cui git merge-file.

Da git aiuto merge file:

git merge-file incorporates all changes that lead from the <base-file> to 
<other-file> into <current-file>. The result ordinarily goes into 
<current-file>. 

git merge-file is useful for combining separate changes to an original. 
Suppose <base-file> is the original, and both <current-file> and <other-file> 
are modifications of <base-file>, then git merge-file combines both changes. 

Esempio (anche dalla pagina di aiuto):

git merge-file README.my README README.upstream 
     combines the changes of README.my and README.upstream since README, 
     tries to merge them and writes the result into README.my. 

Per combinare la logica da file completamente separati in un unico, siete proprio nel combinandoli manualmente.

eliminazione di un file non rimuove la sua storia, si può vedere il registro di un file eliminato con:

git log -- <path_to_file> 

Vedi correlato D/A:

Git: How to search for a deleted file in the project commit history?

Find and restore a deleted file in a Git repository

+0

Grazie mille. Sai se la storia è stata persa in "sovversione"? (btw., bel blog) –

+0

http://stackoverflow.com/questions/497670/whats-a-simple-way-to-undelete-a-file-in-subversion –

1

Non sono sicuro che git merge-file è quello che ti serve. Questo suona più come il refactoring del codice/shuffling in giro.

git rm conserva la cronologia e non è retroattivo. Se ripristini una versione precedente, saranno lì. Quando vado a controllare i miei vecchi check in i file che ho "git rm" d sono ancora lì con la cronologia completa.

1

git rm non perderanno la storia di questi file: vedi "Querying deleted content in git":

di vedere la storia commit di quel file, non è possibile farlo nel solito modo:

$ git log file2 
fatal: ambiguous argument 'file2': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions 

Invece, è necessario fare questo:

$ git log -- file2 

Per quanto riguarda lo git-merge-file, provare ad applicarlo su un file vuoto, ma aggiunto all'indice, MatrixMultiplication.java.

Problemi correlati