Git Zweig diff in ein neues Commit

7

Sagen wir also, ich habe einen Hauptzweig, den wir "Master" nennen. Ich habe einen Zweig gemacht, der "neues Feature" genannt wird. Ich habe eine Menge Commits in diesem Zweig gemacht, so dass ich in der Zeit zurückgehen kann, aber ich habe einiges hin und her während der Entwicklung der Funktion gemacht, so dass das Commit-Protokoll ziemlich unordentlich ist.

Wenn ich mir das ansehen würde git diff master ... neues Feature zum Beispiel.

Wenn ich nur einen neuen neuen Commit auf 'Master' erstellen möchte, der alle Änderungen zwischen den beiden Zweigen enthält, was ist der effizienteste Weg, dies zu tun?

    
hhh 14.02.2013, 21:34
quelle

5 Antworten

17
%Vor%

Die Commit-Nachricht beginnt mit der Anzeige der gesamten Commit-Liste fusioniert / gequetscht, aber Sie können natürlich das bearbeiten, was Sie wollen.

    
qqx 14.02.2013, 22:17
quelle
2

Eine weitere Option, die für Sie besser funktionieren könnte, wäre, eine Patch-Datei mit git diff --patch > "patch filename" zu erstellen und sie dann mit git apply "patch file name" in Ihren Master-Zweig zu patchen.

Man-Seite für git-diff (besonders "Generieren von Patches mit -p"): Ссылка

Man-Seite für git-apply: Ссылка

    
Billy Lazzaro 15.02.2013 13:25
quelle
1

Sie können dafür interaktives Rebase verwenden: git rebase --interactive . Dann benutze einfach die Squash-Option. Es verwendet nur die Updates vom Commit, aber erstellt das Commit nicht.

    
William Seiti Mizuta 14.02.2013 21:40
quelle
1

Benutze git rebase --interactive HEAD ~ (aber viele Commits wollen Squash). zB git rebase - interactive HEAD ~ 5. Dadurch werden die letzten 5 Commits geladen und ein Editorfenster mit den Nachrichten geöffnet. Jede Nachricht wird am Anfang "auswählen". Gehe zur letzten Nachricht, ändere 'pick' in 'squash' und beende. Ein neues Fenster öffnet sich und fragt nach einer Commit-Nachricht. Dies wird die neue Commit-Nachricht der Squash-Commits sein. Beenden und es wird alle Commits in eine neue zerquetschen.

Hier ist ein Beispiel: Ссылка

    
Nick Mitchinson 14.02.2013 21:45
quelle
0

Sie können alles in Ihrem Feature-Zweig festschreiben und dann in den Master einbinden, der 'ihres' für alle Änderungen akzeptiert.

Hier ist eine Stack Overflow-Frage mit einer großartigen Antwort darauf, wie man das macht: Gibt es eine "ihre" Version von "git merge -s unsere"?

    
Billy Lazzaro 14.02.2013 21:43
quelle

Tags und Links