Wenn Sie sich sicher sind, dass Sie nur einen einzigen Commit wünschen und der Zweig nie als "fusioniert" markiert ist (vielleicht weil Sie ihn mit git branch -D my-squash-merged-branch
löschen wollen und ihn nie wieder sehen wollen), verwenden Sie Folgendes:
git checkout master
git merge --squash branch-to-merge
git commit -m "message for commit"
Doch nach viel getestet, ich glaube, der beste Weg, meisten Filialen zu verschmelzen ist:
git checkout master
git merge --no-ff branch-to-merge -m "message for commit"
Dies vermeidet die „vorspulen“ merge, die eine -m "message"
Option für viele verweigert das Spezifizieren verschmilzt. Es ist nicht eigentlich bieten einen einzigen Commit wie ursprünglich angefordert, aber zumindest macht es einfach, den Beginn/Ende der Branche zu sehen und so für einfache Rückgaben und dergleichen zu machen. Ein git log
zeigt alle einzelnen Commits, die ... verschmolzen wurden
commit a6672a4c3d90c35d5f39c45f307ef6b385660196
Merge: 015f8d6 f84e029
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:47:35 2014 -0500
merged something trivial
commit f84e02915faa02afc9a31b8c93a6e7712420687d
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:47:12 2014 -0500
added something also trivial
commit 904d5b5ff00d691d63104a77d2e2ca484732a5fb
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:46:26 2014 -0500
added something trivial
commit 015f8d681bdaf65725067ee8058215cedb529dd6
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:23:31 2014 -0500
optimizations to MyThing
...
... aber wenn Sie bei einem Diagramm sehen des log (git log --graph
), können Sie, dass git sehen in der Tat es nicht erkennt als eine einzelne Zusammenführung.
* commit a6672a4c3d90c35d5f39c45f307ef6b385660196
|\ Merge: 015f8d6 f84e029
| | Author: Brian White <[email protected]>
| | Date: Wed Jan 15 20:47:35 2014 -0500
| |
| | merged something trivial
| |
| * commit f84e02915faa02afc9a31b8c93a6e7712420687d
| | Author: Brian White <[email protected]>
| | Date: Wed Jan 15 20:47:12 2014 -0500
| |
| | added something also trivial
| |
| * commit 904d5b5ff00d691d63104a77d2e2ca484732a5fb
|/ Author: Brian White <[email protected]>
| Date: Wed Jan 15 20:46:26 2014 -0500
|
| added something trivial
|
* commit 015f8d681bdaf65725067ee8058215cedb529dd6
| Author: Brian White <[email protected]>
| Date: Wed Jan 15 20:23:31 2014 -0500
|
| optimizations to MyThing
...
Wenn begeht oder eine andere Aktivität geschieht auf dem Master-Zweig, wird die Kurve, die die fusionierte Zweig zeigt an der richtigen Stelle beginnt und bei dem aktuellen Kopf Beitritt aber natürlich alle Commits noch mit der im Protokoll angezeigt werden legt fest, dass der Zweig an der Spitze ist.
Git Merge - Squash ist erstaunlich. Ich wünschte, ich hätte das 2011 genauer gelesen;) +1 –
Das Problem mit 'git merge --squash' ist, dass es eigentlich kein Merge-Commit erzeugt. GUIs wie GitHubs Netzwerk-Viewer zeigen die Zweige nicht wieder; man wird einfach abrupt enden, während der andere fortfährt. – Maxpm