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
| Befehl | Purpose |
|---|---|
gh stack init | Initialisieren Sie einen neuen Stapel im aktuellen Repository. |
gh stack add | Fügen Sie oben im aktuellen Stapel eine neue Verzweigung hinzu. |
gh stack view | Zeigen Sie den aktuellen Stapel an. |
gh stack checkout | Sehen Sie sich einen Stapel nach Stapelnummer, Pullanforderungsnummer, Pullanforderungs-URL oder Verzweigungsname an. |
gh stack modify | Restrukturieren Sie den aktuellen Stapel interaktiv neu. |
gh stack unstack | Entfernen Sie einen Stapel aus der lokalen Nachverfolgung, und heben Sie ihn auf GitHub. |
gh stack submit | Pushen Sie alle Verzweigungen, erstellen oder aktualisieren Sie dann Pullanforderungen und den Stapel auf GitHub. |
gh stack sync | Abrufen, Neubasis, Push- und Synchronisierungsanforderungsstatus in einem einzigen Befehl. |
gh stack rebase | Ziehen Sie von der Fernbedienung, und führen Sie eine kaskadierende Neubasis über den Stapel aus. |
gh stack push | Verschieben Sie die aktiven Verzweigungen im aktuellen Stapel an die Remoteseite. |
gh stack link | Verknüpfen Sie Pullanforderungen in einen Stapel GitHub ohne lokale Nachverfolgung. |
gh stack merge | Zusammenführen einer oder mehrerer gestapelter Pullanforderungen auf einmal. |
gh stack switch | Interaktiver Wechsel zu einer anderen Verzweigung im Stapel. |
gh stack up | Bewegen Sie sich nach oben in Richtung des Stapels, weg vom Trunk. |
gh stack down | Bewegen Sie sich nach unten zum Ende des Stapels in Richtung des Trunks. |
gh stack top | Springen Sie zum Anfang des Stapels. |
gh stack bottom | Springen Sie zum Ende des Stapels. |
gh stack trunk | Springen Sie zum Trunkzweig. |
gh stack alias | Erstellen Sie einen kurzen Befehlsalias, damit Sie weniger eingeben können. |
gh stack feedback | Teilen 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.
| Flag | Beschreibung |
|---|---|
-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. .
| Flag | Beschreibung |
|---|---|
-A, --all | Alle Änderungen, einschließlich nicht nachverfolgter Dateien, stufen. Erfordert -m. |
-u, --update | Stufen 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.
| Flag | Beschreibung |
|---|---|
-s, --short | Kompakte Ausgabe (nur Verzweigungsnamen) |
--json | Ausgabestapeldaten 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.
| Flag | Beschreibung |
|---|---|
--continue | Fortfahren nach dem Auflösen von Konflikten |
--abort | Abbrechen 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:
- Sie müssen einen aktiven Stapel lokal ausgecheckt haben.
- Ihre Arbeitsstruktur muss sauber sein, ohne dass keine nicht übernommenen Änderungen vorgenommen werden.
- Es wird keine Neubasis ausgeführt.
- Für die Zusammenführung wird keine Pullanforderung im Stapel in die Warteschlange gestellt.
- Der Commit-Verlauf muss linear sein, ohne Zusammenführungs-Commits und keine divergierten Verzweigungen.
Operations
| Operation | Schlüssel | Effect |
|---|---|---|
| Entfernen | ||
| x | Entfernen Sie Verzweigung und deren Commits aus dem Stapel. Die lokale Verzweigung und die zugeordnete Pullanforderung werden beibehalten. | |
| Nach unten falten | ||
| d | Absorb setzt sich in die untere Verzweigung hin zum Trunk ein. Der gefaltete Zweig wird aus dem Stapel entfernt. | |
| Nach oben falten | ||
| u | Absorb commits into the branch above, away from the trunk. Der gefaltete Zweig wird aus dem Stapel entfernt. | |
| Unten einfügen | ||
| i | Fügen Sie eine neue leere Verzweigung unterhalb des Cursors in Richtung des Trunks ein. | |
| Oben einfügen | ||
| Ich | Fü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 | ||
| r | Benennen Sie die Verzweigung mithilfe einer Inlineaufforderung um. | |
| Undo | ||
| Z | Rü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 --abortaus, 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.
| Flag | Beschreibung |
|---|---|
--local | Entfernen 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
$EDITOREscapezeichen 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.
| Flag | Beschreibung |
|---|---|
--auto | Überspringen des Editors und Verwenden automatisch generierter Pullanforderungstitel |
--open | Erstellen 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.
- Holen. Ruft die neuesten Änderungen von
origin. - 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.
- 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.
- 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. - Push. Verschiebt alle Verzweigungen, wenn
--force-with-leaseeine Neubasis aufgetreten ist. - Synchronisieren von Pullanforderungen. Synchronisiert den Abrufanforderungsstatus und GitHub meldet den Status jeder Pullanforderung.
- 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 submitdafür. - Pflaume. In interaktiven Terminals werden Sie aufgefordert, lokale Verzweigungen für zusammengeführte Pullanforderungen zu löschen. Wird
--pruneverwendet, 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ührtgh stack modifywird, wenn Sie die Struktur ändern möchten. Dies ist die Möglichkeit, ihren lokalen Stapel abzugleichen GitHub , dasubmitim Gegensatz dazusyncauch 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.
| Flag | Beschreibung |
|---|---|
--remote <name> | Remote zum Abrufen von und Push an (Standardeinstellungen für die automatisch erkannte Remoteverbindung) |
--prune | Lö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.
| Flag | Beschreibung |
|---|---|
--downstack | Nur Basisverzweigungen vom Trunk bis zur aktuellen Verzweigung |
--upstack | Nur 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. |
--continue | Fortsetzen der Neubasis nach dem Auflösen von Konflikten |
--abort | Abbrechen 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-date | Legen Sie das Committerdatum während der Neubasis auf das Erstellungsdatum fest. Alias: --preserve-dates. |
| Argument | Beschreibung |
|---|---|
[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.
| Flag | Beschreibung |
|---|---|
--remote <name> | Remote zum Pushen an (Standardeinstellung für die automatisch erkannte Remoteverbindung) |
Beispiele:
gh stack push
gh stack push --remote upstream
gh stack link
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.
| Flag | Beschreibung |
|---|---|
--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. |
--open | Markieren 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.
| Flag | Beschreibung |
|---|---|
--merge-method <method> | Zusammenführen-Methode, die verwendet werden soll: merge, , squashoder rebase |
--merge, --squash``--rebase | Kurzhands für die entsprechende Zusammenführungsmethode |
-y, --yes | Zusammenfü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
Navigation
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.
| Flag | Beschreibung |
|---|---|
--remove | Entfernen 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
| Variable | Werte | Beschreibung |
|---|---|---|
GH_STACK_THEME | ||
auto (Standardwert), light, dark | Steuert 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
| Code | Bedeutung |
|---|---|
| 0 | Success |
| 1 | Allgemeiner Fehler |
| 2 | Nicht in einem Stapel oder Stapel nicht gefunden |
| 3 | Rebase-Konflikt |
| 4 | |
| GitHub API-Fehler | |
| 5 | Ungültige Argumente oder Kennzeichnungen |
| 6 | Mehrdeutigkeit erforderlich, da die Verzweigung zu mehreren Stapeln gehört |
| 7 | Rebase wird bereits ausgeführt |
| 8 | Stapel ist durch einen anderen Prozess gesperrt. |
| 9 | Gestapelte Pullanforderungen sind für dieses Repository nicht aktiviert. |
| 10 | Die Sitzung wurde unterbrochen, und die Wiederherstellung ist erforderlich. |