2009-11-03 21 views
15

Manchmal arbeite ich mit mehreren Filialen gleichzeitig. Sagen wir, ich habe Zweige namens master, release-1.1 und experimental. Ich erstelle eine neue Datei oder führe eine Änderung in experimental durch und möchte, dass eine einzige Änderung auf die anderen Zweige angewendet wird.Wie füge ich einen einzelnen Commit zusammen?

Kann ich das in git tun? Wenn ich das Commit einfach in einen anderen Zweig zusammenführe, git automatisch "Fast-Forwards" und schließt alle dazwischen liegenden Commits ein. Aber es muss einen Weg geben, mit diesem Anwendungsfall umzugehen.

Antwort

22

Was Sie tun möchten, heißt cherry picking. Sie können Kirsche pflücken eine einzige begehen Sie den folgenden Befehl:

$ git cherry-pick <commit hash or name> 

Dies wird von dem übernehmen die Änderung nur in Ihrem aktuellen Zweig begehen. Beachten Sie jedoch, dass dies ein neues Commit erstellt; Dieses neue Commit hat genau die gleichen Änderungen wie das Cherry-Picked Commit (und sogar das gleiche Commit-Datum und Autor), aber es ist technisch ein neues commit, also werden Sie es als ein neues Commit in zB gitk sehen . Sie müssen auch die Auswahl für jeden Zweig durchführen, in dem Sie die Änderung sehen möchten.

4

Die Lösung, aber leider die, die Sie eher brauchen vor machen die Änderung wissen, ist nur separaten Zweig zu schaffen für diese Änderung (so genannten „Thema Zweig“), von dem frühesten Zweig oder früheste begehen das macht Sinn und füge diesen Zweig in jeden Zweig ein, der dieses Commit benötigt.

In einigen Fällen könnte eine andere Lösung darin bestehen, Änderungen im Wartungszweig vorzunehmen, den Wartungszweig in den stabilen Zweig zu integrieren und den stabilen Zweig in den Entwicklungszweig zu integrieren.

Junio ​​C Hamano (Git Maintainer) schrieb dazu in seinem Blog: Resolving conflicts/dependencies between topic branches early

+0

Haben Sie einen Link zu diesem Blog-Eintrag haben? Ich denke, das wäre hilfreich, wenn man von einer Git-Behörde kommt. –

+0

Vielleicht dieser Blogeintrag? http://gitester.livejournal.com/27297.html – VonC

+0

Cherry Picking scheint angemessener als dies, tut mir leid zu sagen. –

Verwandte Themen