11# git_chain
22
3- A terminal UI to manage ** stacked git branch chains** — when one feature spans
3+ A terminal UI to manage ** stacked git branch chains** - when one feature spans
44several PRs that each target the previous branch:
55
66```
@@ -15,12 +15,12 @@ and keep history across every repo on your machine.
1515
1616## Features
1717
18- - 🌳 Visualize stacked branches with their PR number, assignee, draft flag, and live ` behind ` / ` ahead ` status.
19- - 🔄 Sync a chain to its target — cascading ** rebase** or ** merge** , running in-app with a live progress overlay.
20- - ⚔️ Conflicts open in your configured ** ` git mergetool ` ** , then the sync continues.
21- - 📦 Stash prompt with explicit, named stashes (auto-restored) when the tree is dirty.
22- - 🗂️ Tracks repos, chains, and full sync history in ` ~/.git_chain/git_chain.db ` .
23- - 🔎 Hybrid chain detection: reconstructs chains from open PRs (` gh ` ), editable per repo.
18+ - Visualize stacked branches with their PR number, assignee, draft flag, and live ` behind ` / ` ahead ` status.
19+ - Sync a chain to its target — cascading ** rebase** or ** merge** , running in-app with a live progress overlay.
20+ - Conflicts open in your configured ** ` git mergetool ` ** , then the sync continues.
21+ - Stash prompt with explicit, named stashes (auto-restored) when the tree is dirty.
22+ - Tracks repos, chains, and full sync history in ` ~/.git_chain/git_chain.db ` .
23+ - Hybrid chain detection: reconstructs chains from open PRs (` gh ` ), editable per repo.
2424
2525## Install
2626
@@ -55,23 +55,23 @@ git_chain sync [name] -s rebase|merge # sync from the shell
5555
5656### Keys (TUI)
5757
58- | Key | Action | Key | Action |
59- | -----| --------| -----| --------|
60- | ` ↑↓ ` | move | ` s ` | sync (choose rebase/merge) |
61- | ` ⏎ ` / ` → ` | open | ` e ` | expand commits vs. parent |
62- | ` ← ` / ` esc ` | back | ` c ` | checkout branch |
63- | ` i ` | import from PRs | ` o ` | open PR in browser |
64- | ` d ` | delete / untrack | ` h ` | sync history |
65- | ` r ` | refresh | ` q ` | quit |
58+ | Key | Action | Key | Action |
59+ | ----------- | ---------------- | --- | -------------------------- |
60+ | ` ↑↓ ` | move | ` s ` | sync (choose rebase/merge) |
61+ | ` ⏎ ` / ` → ` | open | ` e ` | expand commits vs. parent |
62+ | ` ← ` / ` esc ` | back | ` c ` | checkout branch |
63+ | ` i ` | import from PRs | ` o ` | open PR in browser |
64+ | ` d ` | delete / untrack | ` h ` | sync history |
65+ | ` r ` | refresh | ` q ` | quit |
6666
6767## Screenshots
6868
69- | Chains | Stack status |
70- | ---| ---|
69+ | Chains | Stack status |
70+ | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
7171| <img src =" https://raw.githubusercontent.com/orestesgaolin/dart_utilities/refs/heads/main/git_chain/doc/chains.png " width =" 420 " > | <img src =" https://raw.githubusercontent.com/orestesgaolin/dart_utilities/refs/heads/main/git_chain/doc/expanded_commits.png " width =" 420 " > |
7272
73- | Choose strategy | Live sync |
74- | ---| ---|
73+ | Choose strategy | Live sync |
74+ | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
7575| <img src =" https://raw.githubusercontent.com/orestesgaolin/dart_utilities/refs/heads/main/git_chain/doc/strategy.png " width =" 420 " > | <img src =" https://raw.githubusercontent.com/orestesgaolin/dart_utilities/refs/heads/main/git_chain/doc/sync_progress.png " width =" 420 " > |
7676
7777## Try it
0 commit comments