Branches & Eingriffe

Mergen & Rebasen

Aus der Seitenleiste

Rechtsklick auf einen Branch für In aktuellen mergen oder Rebase auf — oder Mergen mit Optionen…, wenn der schlichte Merge derjenige ist, der immer wieder schiefgeht; siehe Merge-Optionen.

Eine Ref auf eine andere ziehen

Die schnellste Geste der App: Nimm einen Branch auf und lass ihn auf einem anderen fallen. Gitcito öffnet ein kleines Menü mit dem, was dieser Drop bedeuten könnte, und tut nichts, bis du dich entscheidest.

Einen Branch auf einen anderen ziehen öffnet das Menü mit dem, was der Drop bedeuten könnte

Es funktioniert an beiden Orten, an denen Refs gezeigt werden — den Branch-, Remote- und Tag-Zeilen der Seitenleiste und den farbigen Ref-Badges im Graphen selbst. Zieh zwischen ihnen in jeder Kombination; das Drop-Ziel leuchtet auf, während du darüber schwebst.

Drop Bedeutet
Merge {source} → {target} Checkt das Ziel aus und merged die Quelle hinein
Rebase {source} auf {target} Spielt die Commits der Quelle oben auf dem Ziel neu ab
Vergleichen Öffnet den Vergleich — ändert nichts

Das Menü bietet nur an, was Git kann. Mergen committet auf das Ziel, also muss das Ziel ein lokaler Branch sein — in einen Tag oder eine Remote-Tracking-Ref kannst du nicht mergen. Rebasen schreibt die Quelle um, also muss die Quelle ein lokaler Branch sein. Lass einen Tag auf einem Remote-Branch fallen, und alles, was du bekommst, ist Vergleichen — weil das tatsächlich alles ist, was es gibt.

Rebase fragt vorher nach: Es gibt jedem neu abgespielten Commit einen neuen Hash, was einen Force-Push bedeutet, wenn der Branch schon veröffentlicht ist. Merge fragt nicht — es fügt nur hinzu. So oder so bringt dich ein Rückgängig wieder zurück.

Merge

Fast-forward, wenn möglich, oder erzwungener Merge-Commit, wenn du die Topologie festgehalten haben willst. Gibt es Konflikte, landest du im Resolver.

Beliebige zwei Refs vergleichen

Wähle eine Basis und eine Vergleichs-Ref — Branch, Tag oder rohe SHA, mit einem Tauschknopf — und du bekommst Ahead/Behind-Zähler, die Commits, die nur auf einer Seite existieren, das vollständige kombinierte Diff und eine Ein-Klick-Übergabe zum PR öffnen.

Zwei Branches vergleichen: was jeder Seite eigen ist, und das kombinierte Diff

Erreichbar aus der Seitenleiste (Vergleich mit dem aktuellen Branch), dem Menü Werkzeuge oder über ⌘K.

Cherry-Pick, Revert, Reset

Cherry-Pick und Revert leben im Kontextmenü des Graphen, wie eh und je. Reset ist ein einziger Eintrag — Auf Commit zurücksetzen… — statt drei roher Soft/Mixed/Hard-Einträge, die sich gegenseitig widersprachen.

Ändern, Rückgängig und Zurücksetzen sitzen oben im Menü eines einzelnen Commits und bleiben sichtbar, wenn sie unsicher sind: Sie werden deaktiviert, mit einem Tooltip, der sagt, warum. Rückgängig gibt es nur für einen ungepushten HEAD; Ändern ist auch auf einem veröffentlichten HEAD erlaubt, warnt aber, dass ein Force-Push nötig sein wird. Zurücksetzen erreicht nur lokale Vorfahren plus den ersten veröffentlichten Commit — nicht beliebig ältere Historie.

Der Reset-Dialog macht den Modus explizit:

Der Dialog „Auf Commit zurücksetzen“, mit den drei ausgeschriebenen Modi

Modus Ergebnis
Soft Änderungen bleiben gestaged
Mixed Änderungen bleiben ungestaged
Hard Commits und ihre Änderungen verwerfen

Hard ist nie vorausgewählt. Ein schmutziger Arbeitsbaum bekommt eine zusätzliche Warnung, weil Zurücksetzen laufende Arbeit überschreiben oder mit ihr in Konflikt geraten kann. Auf GitHub anzeigen liegt bei den Kopieraktionen und öffnet sich nur für veröffentlichte Commits auf einem github.com-Remote.

Wähle vorher mehrere Commits aus, und Cherry-Pick wendet die gesamte Auswahl an, der Reihe nach.

Bevor du irgendetwas merged

Das Konfliktradar prüft jeden Branch gegen eine Basis und sagt dir, welche sich streiten werden — ohne irgendetwas auszuchecken.

Siehe auch: Interaktives Rebase · Gestapelte Branches · Konfliktradar

Diese Übersetzung auf GitHub verbessern