2013-06-27 15 views
19

Ein gemeinsamer Entwicklungs-Workflow für uns ist es, Filiale b Kasse, begehen ein Bündel zu, dann Squash all diese Commits in eine (immer noch auf b).Git Squash alle Commits in der Branche ohne Konflikte

Allerdings, während der rebase -i Prozess Squash alle Commits, gibt es häufig Konflikte bei mehreren Schritten.

ich im Wesentlichen um den Zweig ändern möchten, in eine, die verpflichten repräsentiert den Zustand des Repository zum Zeitpunkt des auf b

letzte commit Ich habe einige der Suche getan, aber ich habe genau das nicht gefunden, was Ich suche. Ich möchte nicht merge --squash, weil wir den gequetschten Feature-Zweig vor dem Zusammenführen testen möchten.

+0

möglich begehen Duplikat von [In git, was ist der Unterschied zwischen merge --squash und rebase?] (http://stackoverflow.com/questions/2427238/in-git-what-is-the-difference-between-merge-squash-) und-Reba se) –

+0

Aus dieser Frage - ich will nicht 'G' in 'stable' sein, ich will es immer noch auf dem Feature-Zweig sein. Ich bin mir nicht sicher, ob ich etwas vermisse –

+0

Könntest du nicht einfach 'G' in die Luft kriegen? –

Antwort

40

Wenn Sie die Festschreibungsinformationen nicht benötigen, können Sie einen Soft-Reset durchführen. Die Dateien bleiben unverändert, und wenn Sie das Commit durchführen, wird dieses Commit auf das Commit gesetzt, auf das Sie zurückgesetzt haben.

git merge-base HEAD BRANCH_YOU_BRANCHED_FROM 

Dann

git reset --soft COMMIT_HASH 

dann wieder herstellt commit, vielleicht: auf die Antwort

git commit -am 'This is the new re-created one commit' 
+0

smart! Ich mag es –

+0

Das ist so cool. –

5

Dies ist simlar von

Um das Zurücksetzen zu finden verpflichten Rasmus aber in drei Schritte zerlegt, die immer funktionieren sollten:

$ git merge feature1 
$ git reset --soft [email protected]{1} 
$ git commit -c feature1 

Erläuterung:

  1. merge und Konflikte lösen
  2. Änderungen halten inszeniert, sondern auf alten Kopf zurückgesetzt
  3. verpflichten alle Änderungen Nachricht und Autor von Funktionszweig begehen mit neuesten