2012-07-19 10 views
6

Ich habe drei Dateien Shell-ijk-ArrayList.java, Shell-ijk-Vektor.java und Shell-ikj-ArrayList.java in diesen git-repository. Ich habe sie manuell zu MatrixMultiplication.java "verschmolzen". Jetzt möchte ich die anderen drei loswerden, aber ich möchte die Geschichte von ihnen behalten. Was ist der beste Weg, dies zu tun?Kann ich Dateien in Git zusammenführen?

ich git merge-file gefunden haben, aber wenn ich versuche

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

ich

error: Could not stat MatrixMultiplication.java 

ich einfach die alten Dateien mit git rm entfernen konnte, aber dann werde ich die Geschichte verlieren, gewann‘ t ich?

Ich könnte auch mit git mv, bewegen, aber was für ein guter Ordner für veraltete Dateien wäre?

+0

Sie genau auf welche Weise zusammenführen? Diese Dateien sehen sehr unterschiedlich aus. –

Antwort

2

Es sieht für mich wie Sie unterschiedliche Dateien mit separater Logik in eine Datei Zusammenführen werden? Dafür ist git merge-file nicht zuständig.

Von git help merge-Datei:

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. 

Beispiel (auch von der Hilfe-Seite):

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. 

Um Logik von völlig unterschiedlichen Dateien in eine zu kombinieren, sind Sie richtig in sie manuell kombinieren.

eine Datei seine Geschichte nicht löscht nicht entfernen, können Sie das Protokoll einer gelöschten Datei mit sehen:

git log -- <path_to_file> 

Siehe ähnlichen Q/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

Vielen Dank. Weißt du, ob die Geschichte in "Subversion" verloren gegangen ist? (übrigens, netter Blog) –

+0

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

1

Ich bin nicht sicher, git merge-Datei ist, was Sie brauchen. Das klingt eher nach Code-Refactoring/Shuffling.

git rm hält Geschichte, und ist nicht rückwirkend. Wenn Sie zu einer früheren Version zurückkehren, werden sie dort sein. Wenn ich gehe und überprüfe meine alten Check-Ins die Dateien, die ich "git rm" d bin immer noch da mit voller Geschichte.

1

git rm wird die Geschichte dieser Dateien nicht verlieren: siehe „Querying deleted content in git“:

Um die Geschichte dieser Datei begehen zu sehen, Sie können es die übliche Art und Weise nicht tun:

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

Stattdessen müssen Sie dies tun:

$ git log -- file2 

Was die git-merge-file, versuchen Sie es auf einem leeren zu bewerben, aber hinzugefügt, um den Index, MatrixMultiplication.java Datei.

Verwandte Themen