Frage

Wenn ich in mehrere Zweige auf einem einzelnen Merkmal arbeite, verwende ich git pull branch1 branch2 branch3 alle Änderungen in meinem Master-Zweig zu ziehen. Allerdings sind die alle begehen Protokolle der einzelnen Branchen sind ebenfalls kopiert. Wie abflachen ich die zu einer einzigen Nachricht log unten begehen?

War es hilfreich?

Lösung

Sie interaktive und "Squash" die Commits rebase - siehe auch Git Bereit Tutorial auf über rebase Quetschen . Leider dump nur einen Link auf Sie, aber das ist eine ziemlich ausführliche Anleitung. Oh, und dies wird Squash auch Ihre verschmilzt ganz gut weg.

Andere Tipps

"git merge --squash" (nach "git holen", "Git-Pull" ist nur holen + fusionieren, pehaps erlaubt es auch --squash Option) könnte , was wollen Sie <. / p>

git-merge (1) :

  

- Squash

     
    

Produzieren des Arbeits Baum und Index-Zustandes, als ob eine wirkliche Zusammenführung passiert ist, aber nicht wirklich ein eine Zusammenführung verpflichten zu schaffen machen zu begehen oder den Kopf, noch Rekord $GIT_DIR/MERGE_HEAD zu bewirken, dass die nächste git commit Befehl bewegen. Auf diese Weise können Sie eine Einzel begehen auf dem aktuellen Zweig, deren Wirkung ist die gleiche wie Verschmelzung einen anderen Zweig (oder mehr bei einer Krake) erstellen.

  

Wie Brian White, das Problem mit git merge --squash kommentiert ist, dass es keine sichtbare Verbindung gibt, und damit auf den Zweig keine Rückverfolgbarkeit (oder die einzelnen Änderungen) Sie fusionierte.

Sichtlich (wenn als Graph git log --graph gesehen), ein wichtiger Zweig, der in Aussehen nicht anders zu einem experimentellen Zweig, die Sie mit der Nase herum und würden gerne verwerfen wieder zusammengeführt worden ist. Beide hängen gerade dort in keiner Verbindung zu irgendetwas. Ich möchte persönlich wissen, dass ein bestimmte Zweig hat in so verschmolzen zurück worden Ich weiß, dass die Arbeit getan ist.

Eine Lösung, die für mich funktioniert, ist eine Zusammenführung mit der nicht-fastforward-Option zu verwenden.

git merge --no-ff somebranch -m "my commit message"

Das zwingt git ein einzelnes Commit mit allen Zweig Änderungen enthalten zu erstellen, können Sie die Nachricht selbst begehen gesetzt (wenn Sie möchten), aber am wichtigsten ist, es die neue verpflichten zurück in die Filiale verbindet sie verschmolzen nur in. Diese sichtbar zeigt, dass die Arbeit an diesem Zweig abgeschlossen ist, sondern auch ermöglicht es Ihnen, zurückverfolgen Details des Individuums von dem fusionierten Zweig verpflichtet zu sehen.

Hier ist ein Beispiel, wo sehr einfache Zweige mit einem und zwei Commits jeweils zurück in Master zusammengeführt wurden. Ich habe gelöscht anschließend die Zweig-Tags auf den fusionierten Filialen jedoch die Zweignamen noch auf der Zusammenführung gesehen werden können Nachricht begehen. Der Zweigname sollte die Änderungen zusammenfassen und wenn Sie die genauen Änderungen wissen wollen, enthalten Sie es zurück zu den einzelnen Commits verfolgen können. Dieser Ansatz scheint gut für einfache Projekte zu arbeiten.

Hinweis: Ich hatte manuell einen der Anschlüsse in ziehen, wie es war so ein dunkelblaues es war kaum sichtbar.

 git log output

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top