Skip to main content

Gestapelte Pullanforderungen CLI-Befehle

Suchen Sie jeden Befehls-, Kennzeichnungs- und Beendigungscode für die gh stack Erweiterung in GitHub CLI.

Hinweis

Dieses Feature befindet sich in der öffentlichen Vorschau und kann geändert werden.

Die gh stack Erweiterung zum GitHub CLI Erstellen und Verwalten von Stapeln von Pullanforderungen aus Ihrem lokalen Repository. Eine Einführung in Stapel finden Sie unter Gestapelte Pullanforderungen.

Einrichtung

gh extension install github/gh-stack

Die Erweiterung erfordert GitHub CLI (gh) Version 2.0 oder höher.

Hinweis

Die gh stack Erweiterung verwendet Ihre GitHub CLI Authentifizierung. Wenn Sie sich noch nicht authentifiziert haben, führen Sie die Ausführung aus gh auth login.

Befehlszusammenfassung

BefehlPurpose
gh stack initInitialisieren Sie einen neuen Stapel im aktuellen Repository.
gh stack addFügen Sie oben im aktuellen Stapel eine neue Verzweigung hinzu.
gh stack viewZeigen Sie den aktuellen Stapel an.
gh stack checkoutSehen Sie sich einen Stapel nach Stapelnummer, Pullanforderungsnummer, Pullanforderungs-URL oder Verzweigungsname an.
gh stack modifyRestrukturieren Sie den aktuellen Stapel interaktiv neu.
gh stack unstackEntfernen Sie einen Stapel aus der lokalen Nachverfolgung, und heben Sie ihn auf GitHub.
gh stack submitPushen Sie alle Verzweigungen, erstellen oder aktualisieren Sie dann Pullanforderungen und den Stapel auf GitHub.
gh stack syncAbrufen, Neubasis, Push- und Synchronisierungsanforderungsstatus in einem einzigen Befehl.
gh stack rebaseZiehen Sie von der Fernbedienung, und führen Sie eine kaskadierende Neubasis über den Stapel aus.
gh stack pushVerschieben Sie die aktiven Verzweigungen im aktuellen Stapel an die Remoteseite.
gh stack linkVerknüpfen Sie Pullanforderungen in einen Stapel GitHub ohne lokale Nachverfolgung.
gh stack mergeZusammenführen einer oder mehrerer gestapelter Pullanforderungen auf einmal.
gh stack switchInteraktiver Wechsel zu einer anderen Verzweigung im Stapel.
gh stack upBewegen Sie sich nach oben in Richtung des Stapels, weg vom Trunk.
gh stack downBewegen Sie sich nach unten zum Ende des Stapels in Richtung des Trunks.
gh stack topSpringen Sie zum Anfang des Stapels.
gh stack bottomSpringen Sie zum Ende des Stapels.
gh stack trunkSpringen Sie zum Trunkzweig.
gh stack aliasErstellen Sie einen kurzen Befehlsalias, damit Sie weniger eingeben können.
gh stack feedbackTeilen Sie Feedback zur gh stack Erweiterung.

Stapelverwaltung

gh stack init

Initialisieren Sie einen neuen Stapel im aktuellen Repository.

gh stack init [flags] [branches...]

Initialisiert einen neuen Stapel lokal. Im interaktiven Modus (keine Argumente) werden die Eingabeaufforderungen für einen Verzweigungsnamen und die Verwendung der aktuellen Verzweigung als erste Ebene angeboten.

Wenn Sie explizite Verzweigungsnamen angeben, werden vorhandene Verzweigungen automatisch übernommen, und fehlende Verzweigungen werden erstellt. Der Trunk ist standardmäßig auf die Standardverzweigung des Repositorys festgelegt, es sei denn, Sie überschreiben ihn mit --base.

Der Befehl wird automatisch aktiviert git rerere , sodass Konfliktauflösungen für alle Basiswerte gespeichert werden.

FlagBeschreibung
-b, --base <branch>Trunk branch for the stack (defaults to the repository's default branch)

Beispiele:

# Interactive — prompts for branch names
gh stack init

# Non-interactive — specify first branch upfront
gh stack init feature-auth

# Use a different trunk branch
gh stack init --base develop feature-auth

# Adopt or create multiple branches at once
gh stack init feature-auth feature-api feature-ui

gh stack add

Fügen Sie oben im aktuellen Stapel eine neue Verzweigung hinzu.

gh stack add [flags] [branch]

Erstellt eine neue Verzweigung am aktuellen HEAD, fügt sie am Anfang des Stapels hinzu und checkt sie aus. Sie müssen diesen Befehl ausführen, während Sie sich am oberen Rand eines Stapels befinden. Wenn Sie keinen Verzweigungsnamen angeben, werden die Eingabeaufforderungen für eine Eingabeaufforderung angezeigt.

Optional können Sie Änderungen stufen und einen Commit als Teil des add Flusses erstellen. Wenn Sie ohne expliziten Verzweigungsnamen angeben -m , wird der Verzweigungsname automatisch im Datums- und Slug-Format generiert, z 03-24-add_login. B. .

FlagBeschreibung
-A, --allAlle Änderungen, einschließlich nicht nachverfolgter Dateien, stufen. Erfordert -m.
-u, --updateStufen Sie Änderungen nur auf nachverfolgte Dateien. Erfordert -m.
-m, --message <string>Erstellen eines Commits mit dieser Nachricht vor dem Erstellen der Verzweigung

Hinweis

-A und -u schließen sich gegenseitig aus.

Beispiele:

# Create a branch by name
gh stack add api-routes

# Prompt for a branch name interactively
gh stack add

# Stage all changes, commit, and auto-generate the branch name
gh stack add -Am "Add login endpoint"

# Stage only tracked files, commit, and auto-generate the branch name
gh stack add -um "Fix auth bug"

# Commit already-staged changes and auto-generate the branch name
gh stack add -m "Add user model"

# Stage all changes, commit, and use an explicit branch name
gh stack add -Am "Add tests" test-layer

# Stage only tracked files, commit, and use an explicit branch name
gh stack add -um "Update docs" docs-layer

gh stack view

Zeigen Sie den aktuellen Stapel an.

gh stack view [flags]

Zeigt alle Verzweigungen im Stapel, deren Sortierung, Pullanforderungslinks und den letzten Commit mit einem relativen Zeitstempel an. Die Ausgabe wird über einen Pager weitergeleitet, der bzw GIT_PAGER``PAGER. die standardmäßig auf less -R.

FlagBeschreibung
-s, --shortKompakte Ausgabe (nur Verzweigungsnamen)
--jsonAusgabestapeldaten als JSON

Beispiele:

gh stack view
gh stack view --short
gh stack view --json

gh stack checkout

Sehen Sie sich einen Stapel anhand seiner Stapelnummer, einer Pullanforderungsnummer, einer Pullanforderungs-URL oder eines Verzweigungsnamens an.

gh stack checkout [<stack-number> | <pr-number> | <pr-url> | <branch>]

Eine nackte Zahl wird zuerst als Stapel- oder Pullanforderungsnummer interpretiert. Hierbei handelt es sich um repositorybezogene Bezeichner, die in der GitHub Benutzeroberfläche angezeigt werden. Wenn nichts mit der Zahl übereinstimmt, wird sie als Verzweigungsname versucht.

Wenn Sie auf einen Remotestapel verweisen, ruft der Befehl den Stapel ab GitHub, ruft die Verzweigungen ab und richtet den Stapel lokal ein. Wenn der Stapel bereits lokal vorhanden ist und übereinstimmt, wechselt der Befehl zur Verzweigung. Wenn die lokalen und Remotestapel unterschiedliche Kompositionen aufweisen, werden Sie aufgefordert, den Konflikt zu lösen.

Wenn Sie einen Verzweigungsnamen angeben, löst der Befehl ihn nur für lokal nachverfolgte Stapel auf.

Wenn Sie den Befehl ohne Argumente in einem interaktiven Terminal ausführen, öffnet es eine durchsuchbare Auswahl, die alle für Sie verfügbaren Stapel auflistet, sowohl die lokal nachverfolgten Stapel als auch die Stapel, die nur auf GitHub. Jede Zeile zeigt die Stapelnummer, deren untere und obere Verzweigung, Basiszweig, eine Statusleiste, die zusammenfasst, wie viele ihrer Pullanforderungen zusammengeführt, geöffnet, geschlossen oder noch nicht pusht werden und ob der Stapel lokal oder nur auf der Remoteseite verfügbar ist. Filtern Sie mit den Registerkarten "Alle", " Lokal" und " Remote ", oder geben Sie den Suchbegriff ein / . Vollständig zusammengeführte Stapel werden weggelassen. Wenn Sie einen reinen Remotestapel auswählen, klonen Sie ihn lokal, bevor Sie zu ihr wechseln.

Beispiele:

# Check out a stack by its stack number
gh stack checkout 7

# Check out a stack by pull request number
gh stack checkout 42

# Check out a stack by pull request URL
gh stack checkout https://github.com/owner/repo/pull/42

# Check out a stack by branch name (local only)
gh stack checkout feature-auth

# Interactive — pick from all available stacks (local and remote)
gh stack checkout

gh stack modify

Restrukturieren Sie den aktuellen Stapel interaktiv neu.

gh stack modify [flags]

Öffnet eine interaktive Terminal-UI zur Umstrukturierung eines Stapels. Alle Änderungen werden auf der Benutzeroberfläche angeordnet und zusammen angewendet, wenn Sie STRG+S drücken. Verzweigungen von zusammengeführten Pullanforderungen können nicht geändert werden.

FlagBeschreibung
--continueFortfahren nach dem Auflösen von Konflikten
--abortAbbrechen der Änderungssitzung und Wiederherstellen des Stapels in den Zustand, bevor Sie den Befehl ausgeführt haben

Voraussetzungen

Der Befehl überprüft diese Bedingungen vor dem Öffnen der Schnittstelle:

  1. Sie müssen einen aktiven Stapel lokal ausgecheckt haben.
  2. Ihre Arbeitsstruktur muss sauber sein, ohne dass keine nicht übernommenen Änderungen vorgenommen werden.
  3. Es wird keine Neubasis ausgeführt.
  4. Für die Zusammenführung wird keine Pullanforderung im Stapel in die Warteschlange gestellt.
  5. Der Commit-Verlauf muss linear sein, ohne Zusammenführungs-Commits und keine divergierten Verzweigungen.

Operations

OperationSchlüsselEffect
Entfernen
xEntfernen Sie Verzweigung und deren Commits aus dem Stapel. Die lokale Verzweigung und die zugeordnete Pullanforderung werden beibehalten.
Nach unten falten
dAbsorb setzt sich in die untere Verzweigung hin zum Trunk ein. Der gefaltete Zweig wird aus dem Stapel entfernt.
Nach oben falten
uAbsorb commits into the branch above, away from the trunk. Der gefaltete Zweig wird aus dem Stapel entfernt.
Unten einfügen
iFügen Sie eine neue leere Verzweigung unterhalb des Cursors in Richtung des Trunks ein.
Oben einfügen
IchFügen Sie einen neuen leeren Verzweigung oberhalb des Cursors ein, weg vom Trunk.
Nach unten
Umschalten+Ordnen Sie die Verzweigung nach unten in Richtung des Trunks an.
Nach oben
UMSCHALT+Ordnen Sie die Verzweigung nach oben an, weg vom Trunk.
Umbenennen
rBenennen Sie die Verzweigung mithilfe einer Inlineaufforderung um.
Undo
ZRückgängigmachen der letzten mehrstufigen Aktion.

Phase anwenden

Wenn Sie STRG+S drücken, werden die mehrstufigen Änderungen durch Umbenennen von Verzweigungen, Einfügen neuer Verzweigungen, Faltung oder Ablegen von Verzweigungen und Ausführen einer Cascading Rebase angewendet, um einen linearen Commitverlauf mit dem gewünschten Stapelzustand zu erstellen.

Wenn ein Rebase-Konflikt auftritt, können Sie eine der folgenden Aktionen ausführen:

  • Lösen Sie die Konflikte, stufen Sie die Dateien auf, und führen Sie dann aus gh stack modify --continue.
  • Führen Sie die Ausführung gh stack modify --abort aus, um den Vorgang abzubrechen und den Stapel in den vorherigen Zustand wiederherzustellen.

Nach dem Ändern

Wenn Sie bereits einen Stapel von Pullanforderungen GitHuberstellt haben, führen gh stack submit Sie diese aus, um die aktualisierten Verzweigungen zu übertragen und den Stapel neu zu erstellen. Der alte Stapel wird automatisch ersetzt.

Beispiele:

# Open the interactive modify interface
gh stack modify

# Continue after resolving a conflict
gh stack modify --continue

# Abort and restore to the previous state
gh stack modify --abort

gh stack unstack

Entfernen Sie einen Stapel aus der lokalen Nachverfolgung, und heben Sie ihn auf GitHub. Dieser Befehl ist auch als gh stack delete.

gh stack unstack [<stack-number>] [flags]

Ohne Argument zielt der Befehl auf den aktiven Stapel ab, bei dem es sich um den Stapel handelt, der die aktuell ausgecheckte Verzweigung enthält. Er entstapelt den Stapel auf GitHub und entfernt die lokale Nachverfolgung.

Geben Sie eine Stapelnummer an, den Bezeichner, der in der Stapelbenutzeroberfläche GitHubangezeigt wird, um einen bestimmten Stapel aufzuheben. Dies funktioniert von praktisch überall im Repository, unabhängig davon, ob der Stapel lokal ausgecheckt ist, da der Stapel direkt über die GitHub API gestapelt wird. Wenn der Stapel auch lokal verfügbar ist, wird auch die lokale Nachverfolgung entfernt.

Pullanforderungen, die zusammengeführt, zusammengeführt oder für die Zusammenführung in die Warteschlange gestellt werden, können nicht aus einem Stapel GitHub entfernt und bleiben Teil des Stapels. Wenn jede Pullanforderung entfernt wird, wird der Stapel aufgelöst, und jede lokale Nachverfolgung wird entfernt. Wenn einige Pullanforderungen gestapelt bleiben, wird der Stapel beibehalten, und die lokale Nachverfolgung bleibt unverändert. Wird verwendet --local , um den Remotevorgang zu überspringen und nur die lokale Nachverfolgung zu entfernen.

Dieser Befehl ist nützlich, wenn Sie einen Stapel neu strukturieren müssen, indem Sie eine Verzweigung entfernen, eine Verzweigung einfügen, Verzweigungen neu anordnen, Verzweigungen umbenennen oder andere große Änderungen vornehmen. Verwenden Sie gh stack init nach dem Aufpacken den Stapel mit der gewünschten Struktur neu. Bestehende Verzweigungen werden automatisch übernommen.

FlagBeschreibung
--localEntfernen Sie den Stapel nur lokal, und behalten Sie ihn bei GitHub

Beispiele:

# Unstack the current stack on GitHub and remove local tracking
gh stack unstack

# Unstack a specific stack by its number
gh stack unstack 7

# Only remove local tracking
gh stack unstack --local

Remotevorgänge

gh stack submit

Pushen Sie alle Verzweigungen, erstellen oder aktualisieren Sie dann Pullanforderungen und den Stapel auf GitHub.

gh stack submit [flags]

Erstellt eine Pullanforderung für jede Verzweigung im Stapel, wobei Verzweigungen an die Remoteseite verschoben werden. Nach dem Erstellen von Pullanforderungen wird automatisch ein Stapel GitHub erstellt, submit um die Pullanforderungen zusammen zu verknüpfen. Wenn der Stapel bereits vorhanden GitHubist , z. B. aus einem vorherigen Absenden, werden dem vorhandenen Stapel neue Pullanforderungen hinzugefügt.

Wenn jede Pullanforderung im Stapel bereits zusammengeführt wurde, ist dieser Stapel abgeschlossen und kann nicht erweitert werden. In diesem Fall startet automatisch ein neuer Stapel, submit der am Trunk für Ihre nicht verbundenen Verzweigungen gestammt ist, und erstellt ihn auf GitHub, sodass der zusammengeführte Stapel unverändert bleibt.

Öffnet in einem interaktiven Terminal submit einen Vollbild-Editor auf einem einzigen Bildschirm.

  • Linker Bereich. Jede Verzweigung ohne Pullanforderung ist standardmäßig enthalten. Deaktivieren Sie die Auswahl aller, die Sie nicht mit STRG+X übermitteln möchten. Da jede Pullanforderung auf der darunter liegenden Verzweigung aufbaut, wird durch Deaktivieren einer Verzweigung auch die darüber gestapelten abgewählt, und das erneute Einschließen einer Verzweigung schließt die darunter liegenden ab, von denen sie abhängt. Verzweigungen, die bereits über eine Pullanforderung verfügen, ob geöffnet, entwurf, in die Warteschlange gestellt oder zusammengeführt werden, werden für kontextbezogene, aber gesperrte Verzweigungen angezeigt. Bearbeiten Sie diese im Web.
  • Rechtes Panel. Entwerfen Sie für die fokussierte Verzweigung den Titel und die Beschreibung, und wählen Sie aus, ob die Pullanforderung zur Überprüfung oder als Entwurf geöffnet wird. Die Beschreibung wird aus der Pull-Anforderungsvorlage Ihres Repositorys oder commits mit einer Markdownvorschau und einem $EDITOR Escapezeichen ausgefüllt. Beim Fokussieren eines gesperrten Zweigs wird eine schreibgeschützte Karte mit einem Link zu seiner Pullanforderung angezeigt. Drücken Sie o , um sie im Browser zu öffnen.

Drücken Sie STRG+S , um alle enthaltenen Pullanforderungen gleichzeitig zu übermitteln. Der Editor unterstützt sowohl Tastatur- als auch Mauseingaben. Übergeben --autoOder führen Sie den Befehl in einem nicht interaktiven Terminal wie CI aus, um den Editor zu überspringen und automatisch generierte Titel zu verwenden.

Wenn die Verzweigungen bereits geöffnete Pullanforderungen haben, aber kein Stapel vorhanden ist GitHub, haben Sie die Möglichkeit, die Pullanforderungen mit STRG+B in einen Stapel zu verknüpfen.

Im Editor werden neue Pullanforderungen standardmäßig für die Überprüfung bereit. Sie können jede Pullanforderung mit der Umschaltfläche in den Entwurf kippen. Mit --auto, werden neue Pullanforderungen als Entwürfe erstellt, es sei denn, Sie übergeben --open.

FlagBeschreibung
--autoÜberspringen des Editors und Verwenden automatisch generierter Pullanforderungstitel
--openErstellen sie neue Pullanforderungen als bereit für die Überprüfung anstelle von Entwürfen, und markieren Sie vorhandene Pullanforderungen als bereit für die Überprüfung.
--remote <name>Remote zum Pushen an (Standardeinstellung für die automatisch erkannte Remoteverbindung)

Beispiele:

gh stack submit
gh stack submit --auto
gh stack submit --open

gh stack sync

Abrufen, Neubasis, Push- und Synchronisierungsanforderungsstatus in einem einzigen Befehl.

gh stack sync [flags]

Synchronisiert den gesamten Stapel.

  1. Holen. Ruft die neuesten Änderungen von origin.
  2. Abstimmung des Remotestapels. Spiegelt den Stapel lokal wieder GitHub . Wenn pull-Anforderungen dem Stapel GitHubhinzugefügt wurden, sodass die Remote vor dem lokalen Stapel liegt, werden ihre Verzweigungen automatisch nach unten gezogen und an den lokalen Stapel angefügt. Wenn die lokalen und Remotestapel wirklich voneinander abweichen, z. B. weil Sie eine Verzweigung lokal hinzugefügt haben, während dem Stapel GitHubverschiedene Pullanforderungen hinzugefügt wurden, werden Sie aufgefordert, den Unterschied zu beheben. Siehe "Diverged stacks". In einem nicht interaktiven Terminal bricht eine Divergenz die Synchronisierung ab, und nichts wird pushed oder aktualisiert.
  3. Schnell-Vorwärts-Trunk. Leitet die Trunkverzweigung schnell weiter, um mit der Remote zu übereinstimmen. Dieser Schritt wird übersprungen, wenn sich die Verzweigungen voneinander unterscheiden.
  4. Kaskadierungs-Neubasis. Basiert auf allen Stapelverzweigungen auf die aktualisierten Übergeordneten, aber nur dann, wenn trunk verschoben wird. Wenn ein Konflikt erkannt wird, werden alle Verzweigungen in ihrem ursprünglichen Zustand wiederhergestellt, und Sie werden empfohlen gh stack rebase , Konflikte interaktiv zu lösen.
  5. Push. Verschiebt alle Verzweigungen, wenn --force-with-lease eine Neubasis aufgetreten ist.
  6. Synchronisieren von Pullanforderungen. Synchronisiert den Abrufanforderungsstatus und GitHub meldet den Status jeder Pullanforderung.
  7. Synchronisieren Sie den Stapel. Verknüpft die geöffneten Pullanforderungen des Stapels in einen Stapel GitHub, erstellt das Remotestapelobjekt, falls es noch nicht vorhanden ist, oder aktualisiert es, wenn er teilweise gebildet ist. Dies geschieht nur, wenn zwei oder mehr Pullanforderungen vorhanden sind. Die Synchronisierung öffnet nie Pullanforderungen. Verwenden Sie gh stack submit dafür.
  8. Pflaume. In interaktiven Terminals werden Sie aufgefordert, lokale Verzweigungen für zusammengeführte Pullanforderungen zu löschen. Wird --prune verwendet, um automatisch zu schneiden.

Ein sauberes Remote-Ahead-Update, bei dem Pullanforderungen über Ihrem lokalen Stapel hinzugefügt werden, wird automatisch nach unten gezogen, ohne dazu aufgefordert zu werden. Daher sync ist die Ausführung in der Automatisierung sicher. Synchronisieren Sie nur Eingabeaufforderungen, wenn die Stapel wirklich voneinander abweichen.

Divergierte Stapel

Wenn kein Stapel ein klares Präfix des anderen ist, z. B. weil Sie eine Verzweigung lokal hinzugefügt haben, während separate Pullanforderungen demselben Stapel GitHubhinzugefügt wurden, kann die Synchronisierung die beiden nicht automatisch zusammenführen. In einem interaktiven Terminal bietet es drei Auswahlmöglichkeiten.

  • Verwenden Sie den Remotestapel als Wahrheitsquelle. Ersetzt ihre lokale Stapelkomposition durch die Remote-Elemente, wobei alle fehlenden Verzweigungen abgerufen werden. Wenn Sie sich auf einer Verzweigung befinden, die der Remotestapel nicht mehr enthält, werden Sie in die nächste überlebende Verzweigung verschoben. Dies erfordert einen sauberen Arbeitszustand ohne nicht abgeschlossene Änderungen.
  • Löschen Sie den Stapel auf GitHub. Löscht das Stapelobjekt an GitHub und beendet die Synchronisierung. Ihre Pullanforderungen und lokale Verzweigungen bleiben unberührt, und nur der Stapel wird GitHub entfernt. Erstellen Sie den Stapel neu, gh stack submitwobei sie zuerst ausgeführt gh stack modify wird, wenn Sie die Struktur ändern möchten. Dies ist die Möglichkeit, ihren lokalen Stapel abzugleichen GitHub , da submitim Gegensatz dazu syncauch Pullanforderungen für alle Verzweigungen erstellt werden, die Sie noch nicht übermittelt haben.
  • Abbrechen. Bricht die Synchronisierung ab, ohne Verzweigungen zu übertragen oder Pullanforderungen zu aktualisieren.

In einem nicht interaktiven Terminal bricht eine Divergenz die Synchronisierung ab, wird erfolgreich beendet, ohne Verzweigungen zu pushen oder Pullanforderungen zu aktualisieren. Lösen Sie sie durch Auflisten und Erneutes Erstellen des Stapels auf.

FlagBeschreibung
--remote <name>Remote zum Abrufen von und Push an (Standardeinstellungen für die automatisch erkannte Remoteverbindung)
--pruneLöschen lokaler Verzweigungen für zusammengeführte Pullanforderungen

Beispiele:

gh stack sync

# Sync and automatically prune merged branches
gh stack sync --prune

gh stack rebase

Ziehen Sie von der Fernbedienung, und führen Sie eine kaskadierende Neubasis über den Stapel aus.

gh stack rebase [flags] [branch]

Ruft die neuesten Änderungen von origin, und stellt dann sicher, dass jeder Verzweigung im Stapel die Spitze der vorherigen Ebene im Commit-Verlauf hat. Verzweigungen werden von oben nach oben sortiert.

Wenn die Pullanforderung einer Verzweigung zusammengeführt wurde, wechselt die Basis automatisch in --onto den Modus, um commits korrekt wieder auf dem Seriendruckziel wiederzuverwenden.

Wenn ein Rebase-Konflikt auftritt, wird der Vorgang angehalten und die konfliktierten Dateien mit Zeilennummern gedruckt. Lösen Sie die Konflikte auf, stellen Sie sie mit git add, und fahren Sie dann mit --continue. Wenn Sie die gesamte Basis rückgängig machen möchten, stellen Sie --abort alle Verzweigungen vor der Basis wieder her.

FlagBeschreibung
--downstackNur Basisverzweigungen vom Trunk bis zur aktuellen Verzweigung
--upstackNur Basisverzweigungen von der aktuellen Verzweigung bis zum oberen Rand
--no-trunkÜberspringen Sie den Trunk. Nur rebase stack branches to each other, with no fetch and no trunk rebase.
--continueFortsetzen der Neubasis nach dem Auflösen von Konflikten
--abortAbbrechen der Basis und Wiederherstellen aller Verzweigungen in ihren Zustand vor der Neubasis
--remote <name>Remote zum Abrufen von (Standardeinstellungen für die automatisch erkannte Remoteverbindung)
--committer-date-is-author-dateLegen Sie das Committerdatum während der Neubasis auf das Erstellungsdatum fest. Alias: --preserve-dates.
ArgumentBeschreibung
[branch]Zielverzweigung (Standardeinstellung für die aktuelle Verzweigung)

Beispiele:

# Rebase the entire stack
gh stack rebase

# Only rebase branches below the current one
gh stack rebase --downstack

# Only rebase branches above the current one
gh stack rebase --upstack

# Rebase stack branches without pulling from or rebasing with trunk
gh stack rebase --no-trunk

# After resolving a conflict
gh stack rebase --continue

# Abort rebase and restore everything
gh stack rebase --abort

# Rebase and preserve committer date as author date
gh stack rebase --committer-date-is-author-date

gh stack push

Verschieben Sie die aktiven Verzweigungen im aktuellen Stapel an die Remoteseite.

gh stack push [flags]

Verschiebt alle aktiven Verzweigungen, ausgenommen zusammengeführte und in die Warteschlange eingereihte Verzweigungen in einer einzigen git pushVerzweigung, wobei eine explizite Verzweigungsprüfung --force-with-lease verwendet wird. Das Update ist nicht atomar. Verzweigungen, deren Leases bestehen, können auch dann aktualisiert werden, wenn eine andere Verzweigung abgelehnt wird. Korrigieren Sie den abgelehnten Verzweigung, und führen Sie den Befehl erneut aus. Verzweigungen, die bereits aktualisiert wurden, bleiben unverändert. Mit diesem Befehl werden keine Pullanforderungen erstellt oder aktualisiert. Verwenden Sie gh stack submit dafür.

FlagBeschreibung
--remote <name>Remote zum Pushen an (Standardeinstellung für die automatisch erkannte Remoteverbindung)

Beispiele:

gh stack push
gh stack push --remote upstream

Verknüpfen Sie Pullanforderungen in einen Stapel GitHub ohne lokale Nachverfolgung.

gh stack link [flags] <stack-number | branch-or-pr> <branch-or-pr> [...]

Erstellt oder aktualisiert einen Stapel GitHub aus Verzweigungsnamen oder Pullanforderungsnummern und URLs. Dieser Befehl erstellt oder ändert keinen lokalen Nachverfolgungsstatus. Es wurde für Personen entwickelt, die Filialen mit anderen Tools lokal verwalten, z. B. Jujutsu, Sapling oder Git-Town, und möchten einen Stapel von Pullanforderungen öffnen. Siehe Verwenden anderer Tools mit gestapelten Pullanforderungen.

Sie stellen Argumente in Stapelreihenfolge von unten nach oben bereit. Verzweigungsargumente werden automatisch an die Remote übertragen, bevor Pullanforderungen erstellt oder nachschlagen. Bei Verzweigungen, die bereits offene Pullanforderungen haben, werden diese Pullanforderungen verwendet. Bei Verzweigungen ohne Pullanforderungen werden neue Pullanforderungen automatisch mit der richtigen Basiszweigkette erstellt. Vorhandene Pullanforderungen, deren Basiszweig nicht mit der erwarteten Kette übereinstimmt, werden automatisch korrigiert.

Wenn sich die Pullanforderungen noch nicht in einem Stapel befinden, wird ein neuer Stapel erstellt. Wenn sich einige der Pullanforderungen bereits in einem Stapel befinden, wird der vorhandene Stapel aktualisiert, um die neuen Pullanforderungen einzuschließen. Vorhandene Pullanforderungen werden nie aus einem Stapel entfernt, da das Update nur additiv ist.

Um einen vorhandenen Stapel zu vergrößern, ohne seine Pullanforderungen erneut aufzulisten, übergeben Sie eine Stapelnummer, die in der Stapel-UI GitHubangezeigt wird, als erstes Argument. Die übrigen Argumente werden oben in diesem Stapel angefügt. Argumente, die bereits im Stapel vorhanden sind, werden übersprungen, und Argumente, die zu einem anderen Stapel gehören, werden abgelehnt. Da Stapel- und Pullanforderungsnummern niemals überlappen, wird ein numerisches erstes Argument nur dann als Stapel behandelt, wenn es mit einem vorhandenen Stapel übereinstimmt. Andernfalls wird sie als Pullanforderung oder Verzweigung behandelt.

FlagBeschreibung
--base <branch>Base branch for the bottom of the stack (default to the repository's default branch). Dieses Kennzeichen wird ignoriert, wenn Sie einem vorhandenen Stapel hinzufügen.
--openMarkieren neuer und vorhandener Pullanforderungen als bereit für die Überprüfung
--remote <name>Remote zum Pushen an (Standardeinstellung für die automatisch erkannte Remoteverbindung)

Beispiele:

# Link branches into a stack (pushes, creates pull requests, creates stack)
gh stack link feature-auth feature-api feature-ui

# Link existing pull requests by number
gh stack link 10 20 30

# Link existing pull requests by URL
gh stack link https://github.com/owner/repo/pull/10 https://github.com/owner/repo/pull/20

# Add branches to an existing stack of pull requests
gh stack link 42 43 feature-auth feature-ui

# Append to the top of an existing stack by its stack number, with no need
# to list the pull requests already in stack 7 again
gh stack link 7 48 feature-ui

# Use a different base branch and mark pull requests as ready for review
gh stack link --base develop --open feat-a feat-b feat-c

gh stack merge

Zusammenführen einer oder mehrerer gestapelter Pullanforderungen auf einmal.

gh stack merge [<stack-number> | <pr-number>]

Führt jede Pullanforderung im Stapel zusammen, bis zu der pull-Anforderung, die Sie auswählen, in den Basiszweig. Bei der Zusammenführung handelt es sich um einen einzigen Vorgang ohne Aktion. Wenn eine Pullanforderung nicht zusammengeführt werden kann, werden sie nicht zusammengeführt.

Ohne Argument verwendet der Befehl den aktiven lokalen Stapel. Stellen Sie eine Stapelnummer zum Zusammenführen eines Stapels bereit, den Sie nicht ausgecheckt haben, bei dem es sich um einen rein remote Vorgang handelt, oder stellen Sie eine Pullanforderungsnummer bereit, um direkt bis zu dieser Pullanforderung zusammenzuführen.

In einem interaktiven Terminal werden Sie aufgefordert, auszuwählen, welche Pullanforderungen zusammengeführt werden sollen, wählen Sie die Merge-Methode aus, und bestätigen Sie. In einem nicht interaktiven Terminal oder wenn Sie den gesamten Stapel oder alles bis zur von Ihnen angegebenen Pullanforderung verwenden --yes, wird ohne Aufforderung zusammengeführt, indem Sie die zuletzt verwendete Zusammenführungsmethode verwenden, es sei denn, Sie geben eine an.

Nur der grundlegende Pullanforderungsstatus wird vor dem Zusammenführen überprüft. Jede Pullanforderung muss geöffnet sein und darf kein Entwurf sein. GitHub wertet Verzweigungsschutz- und Repositoryregeln aus, wenn der Seriendruck ausgeführt wird, und alle Fehler werden ihnen gemeldet.

Hinweis

Sie können die Zusammenführungsanforderungen nicht umgehen, wenn Sie gestapelte Pullanforderungen zusammenführen.

Wenn der Basiszweig eine Seriendruckwarteschlange verwendet, wird der Stapel der Warteschlange hinzugefügt, anstatt direkt zusammengeführt zu werden. Die Warteschlange wählt die Zusammenführungsmethode aus, sodass die Eingabeaufforderung den Schritt der Zusammenführungsmethode überspringt, und --merge die --merge-method``--squash``--rebaseFlags werden mit einer Warnung ignoriert. Die von Ihnen ausgewählten Pullanforderungen werden der Warteschlange zusammen hinzugefügt, aber sie werden zusammengeführt, während die Warteschlange sie verarbeitet, sodass sie nicht alle gleichzeitig in separaten Gruppen landen können.

FlagBeschreibung
--merge-method <method>Zusammenführen-Methode, die verwendet werden soll: merge, , squashoder rebase
--merge, --squash``--rebaseKurzhands für die entsprechende Zusammenführungsmethode
-y, --yesZusammenführen ohne Bestätigungsaufforderung

Beispiele:

# Merge the current stack, choosing pull requests interactively
gh stack merge

# Merge a stack you do not have checked out, by stack number
gh stack merge 7

# Merge everything up to and including pull request 42
gh stack merge 42

# Merge the whole current stack without prompting, squashing commits
gh stack merge --yes --squash

Navigationsbefehle verschieben Sie zwischen Verzweigungen im aktuellen Stapel, ohne sich Verzweigungsnamen merken zu müssen. Der untere Teil des Stapels ist die Verzweigung, die dem Trunk am nächsten kommt, und der Obere ist der Verzweigung, der am weitesten davon entfernt ist. up bewegt sich vom Trunk weg und down bewegt sich in Richtung.

Alle Navigationsbefehle klammern die Grenzen des Stapels. Wenn Sie von oben nach oben oder unten von unten wechseln, wird nichts ausgeführt und eine Meldung angezeigt.

gh stack switch

Interaktiver Wechsel zu einer anderen Verzweigung im Stapel.

gh stack switch

Zeigt eine interaktive Auswahl mit allen Verzweigungen im aktuellen Stapel an, sortiert von oben, am weitesten vom Trunk bis unten, am nächsten am Trunk mit ihrer Positionsnummer. Wählen Sie eine Verzweigung aus, um sie auszuchecken.

Dieser Befehl erfordert ein interaktives Terminal.

Beispiele:

gh stack switch
#    → Select a branch in the stack to switch to
#      5. frontend
#      4. api-endpoints
#      3. auth-layer
#      2. db-schema
#      1. config-setup

gh stack up

Bewegen Sie sich nach oben in Richtung des Stapels, weg vom Trunk.

gh stack up [n]

Verschiebt Verzweigungen nach oben n , standardmäßig auf 1. Wenn Sie sich in der Trunkverzweigung befinden, up wechselt sie zum ersten Stapelzweig.

Beispiele:

# Move up one layer
gh stack up

# Move up three layers
gh stack up 3

gh stack down

Bewegen Sie sich nach unten zum Ende des Stapels in Richtung des Trunks.

gh stack down [n]

Verschiebt Verzweigungen nach unten n , standardmäßig auf 1.

Beispiele:

# Move down one layer
gh stack down

# Move down two layers
gh stack down 2

gh stack top

Springen Sie zum Anfang des Stapels.

gh stack top

Checkt die Verzweigung am weitesten vom Trunk aus.

gh stack bottom

Springen Sie zum Ende des Stapels.

gh stack bottom

Checkt die Verzweigung aus, die dem Trunk am nächsten kommt.

gh stack trunk

Springen Sie zum Trunkzweig.

gh stack trunk

Überprüft den Trunkzweig des aktuellen Stapels, z main. B. . Sie müssen sich auf einer Verzweigung befinden, die Teil eines Stapels ist.

Versorgungsdienste

gh stack alias

Erstellen Sie einen kurzen Befehlsalias, damit Sie weniger eingeben können.

gh stack alias [flags] [name]

Installiert ein kleines Wrapperskript, das ~/.local/bin/ alle Argumente gh stackweiterleitet. Der Standardaliasname lautet gs, Aber Sie können einen beliebigen Namen auswählen, indem Sie ihn als Argument übergeben. Nach dem Setup können gs push Sie anstelle von gh stack push.

Bei Windows wird die automatische Aliaserstellung nicht unterstützt. Der Befehl druckt manuelle Anweisungen zum Erstellen einer Batchdatei oder PowerShell-Funktion.

FlagBeschreibung
--removeEntfernen eines zuvor erstellten Alias

Beispiele:

# Create the default alias (gs), so that "gs push" and "gs view" both work
gh stack alias

# Create a custom alias
gh stack alias gst

# Remove an alias
gh stack alias --remove
gh stack alias --remove gst

gh stack feedback

Teilen Sie Feedback zur gh stack Erweiterung.

gh stack feedback [title]

Öffnet eine Diskussion im Gh-Stack-Repository , damit Sie Feedback übermitteln können. Optional können Sie einen Titel für den Diskussionsbeitrag angeben.

Beispiele:

gh stack feedback
gh stack feedback "Support for reordering branches"

Umgebungsvariablen

VariableWerteBeschreibung
GH_STACK_THEME
auto (Standardwert), light, darkSteuert die Farbpalette der interaktiven Bildschirme für submit, modifyund viewalle farbigen Befehlsausgabe. Farben passen sich automatisch an den Terminalhintergrund an. Legen Sie diese Variable fest, um die helle oder dunkle Palette zu erzwingen, wenn ein Terminal seinen Hintergrund nicht meldet, was in einigen SSH- oder tmux Setups auftreten kann.
# Force the light palette for one command
GH_STACK_THEME=light gh stack view

Exitcodes

CodeBedeutung
0Success
1Allgemeiner Fehler
2Nicht in einem Stapel oder Stapel nicht gefunden
3Rebase-Konflikt
4
GitHub API-Fehler
5Ungültige Argumente oder Kennzeichnungen
6Mehrdeutigkeit erforderlich, da die Verzweigung zu mehreren Stapeln gehört
7Rebase wird bereits ausgeführt
8Stapel ist durch einen anderen Prozess gesperrt.
9Gestapelte Pullanforderungen sind für dieses Repository nicht aktiviert.
10Die Sitzung wurde unterbrochen, und die Wiederherstellung ist erforderlich.

Weiterführende Lektüre