Während der Entwicklung muss ich oft committen und push "intermediate" commits, dh mit dem Code nicht kompatibel oder in der Mitte etwas zu ändern, etc. Ich will nicht machen solche Commits, aber das ist für die einfache Fortsetzung meiner Arbeit von Büro zu Hause erforderlich, manchmal für andere Entwickler, um sie Basis, auf der sie ihre Arbeit beginnen können.Git fusionieren ohne Commits von einem Zweig zum anderen
Ich dachte, ich eine Lösung für dieses Problem gefunden hatte:
ich einen separaten „dev“ Zweig erstellen und mache alle Zwischen Commits.
Sobald der Code in gutem Zustand ist, führen Sie eine Zusammenführung zum Master durch. Der Master würde also keine "Zwischen" -Zulassungen enthalten, sondern nur "normale" Commits.
Löschen Sie den Zweig "dev" mit allen Zwischenbefehlen.
Aber das funktioniert nicht. Wenn ich merge, wird nicht nur das Merge-Commit in den Master aufgenommen, sondern auch alle "intermediate" Commits vom "dev" -Verzweigungen. Das Löschen von "dev" branch gibt also nichts, seine "intermediate" Commits bleiben dort.
So lautet die Frage: ist es möglich, Merge in der Art und Weise, dass Master würde nur seine eigenen Commits + Merge Commit und nicht die Commits aus dem zweiten Zweig enthalten zu machen? Wenn es unmöglich ist, könnten Sie mir raten, wie ich mein Ziel erreichen kann - temporäre Ergebnisse zu speichern, aber auch später nahtlos zu löschen?
Ist Squash eine gute Idee, da er diese Commits mit anderen Entwicklern teilt? – jszakmeister
+1 für die Erwähnung von 'git Rebase -i'. Dann würden die Leute * wirklich * nichts über den lokalen Dev-Zweig wissen. –
@jszakmeister, da er Änderungen von einem lokalen Dev-Zweig zu seiner lokalen Kasse des Meisters zusammenführt, ist es in Ordnung. Wenn er seine Änderungen vorantreibt, wird es den anderen Entwicklern so erscheinen, als wären seine Änderungen ein riesiger Kompromiss. Mit anderen Worten, Squashing ermöglicht es Ihnen, ein Commit zu haben, das "Add new feature" anstelle von "Oops. Fix typo" sagt. –