Jacob Gold
02/15/2024, 12:11 AM- Fixed an issue where `gt submit` would fail in repositories using `git-lfs`.
Atlas Wegman
02/16/2024, 8:02 PMgt absorb
on an already commited stack? For example, I have a large branch where I renamed an API across 100 files. I'd like this to be at the bottom (near the trunk) but it's in the middle.Slackbot
02/27/2024, 6:21 PMSlackbot
03/06/2024, 4:20 PMSlackbot
03/08/2024, 7:43 PMJacob Gold
03/26/2024, 12:49 AMgt sync
and gt get
(and to a lesser extent, gt submit
) to better support collaborative flows. We expect to iterate on this for a bit in the beta group – we currently have the new versions of those commands gated behind a feature flag that checks for CLI v1.3.1, and may bump that value if we decide its not yet ready for general release (in which case you would bump your beta CLI in order to keep testing).
1.3.1
• Updated gt submit
to match the new behavior of gt sync
and gt get
.
• gt submit
now skips branches with no commits between head and base and their descendants, instead of failing outright (GitHub does not allow PRs with no commits).
• gt submit
now prompts to restack if the --restack
flag is not passed and it would fail without restacking.
• Fixed a bug where gt submit
would restack in certain cases when the --restack
flag was not passed.
• Fixed a bug where gt submit
was not prompting to choose between pasting template/commit messages and editing them.
• Fixed a bug where legacy scoped submit commands were not enforcing that branches be restacked before submitting.
• Deleting branches in gt sync
, gt get
, gt submit
, or with gt delete
now prints the SHA the branch was at before deletion like Git, as there is no reflog for deleted branches.
• Added better error messaging for the new version of gt sync
when unauthed.
• Fixed a bug where commands that open a URL would fail if xdg-open
was not installed, instead of printing the URL to the terminal.
• Fixed a bug where gt get
would not set up the remote-tracking branch properly.
• Fixed a bug in the new version of gt get
and gt sync
where branches would not get newly associated with PRs.
• Fixed a typo in gt absorb
.
1.3.0
• This version of the Graphite CLI includes a significant update to gt sync
and gt get
that will be rolled out over the coming weeks via a server-side feature flag.
• The primary goal of these changes is to improve the experience of syncing remote changes to your local branches, ensuring that flows like collaborating on a stack or applying suggested edits to a PR are seamless and reliable.
• Notably, gt sync
now syncs all branches, where previously it just synced trunk. This brings it closer to the behavior of gt get
.
• Conversely, gt get
with no argument passed is essentially "`gt sync` for the currently checked out stack."
• The full behavior is:
a. Update the trunk branch to match remote
b. Clean up branches associated with merged or closed PRs
c. Sync any remote changes to local branches
d. Restack branches as needed
• If you'd like to be included in the initial rollout of these changes, please let us know in the #C0604H4AM97 channel on our Community Slack. gt create
now applies the branch prefix to branch names passed in directly (e.g. gt create branch-name
with a prefix of prefix/
will yield a branch called prefix/branch-name
). This behavior can be disabled in gt config
. If the branch name already begins with the prefix, it will not be added again.
• Graphite now sets the environment variable GT
to 1
, which can be checked by subprocesses like an editor or Git hook to determine if they are being run from Graphite.
• Fixed a bug where gt absorb
would fail if the git config to detect copies in diffs was enabled.
• Fixed a bug where gt split --by-hunk
would leave the user in a detached state if interrupted.
• If no changes are staged in a step of gt split --by-hunk
, it will now prompt to stage changes again instead of exiting with an error.
• Slightly updated help text and error messages for gt fold
.Jacob Gold
03/26/2024, 5:57 PMgt submit
in 1.3.1, this should help:
1.3.2
• Fixed a bug where gt submit
would hang in certain cases.Jacob Gold
04/12/2024, 4:48 PMgt submit
could fail in certain cases due to the format of a Git remote URL.
• Fixed an issue where the wrong branch name was referenced by `gt move`'s prompt.
• Fixed an issue where gt absorb
could fail in certain environments.
• Fixed an issue where gt log short
could incorrectly show a branch as "updated remotely" when it was not.
• Added interactivity to gt feedback
.Vampire
04/19/2024, 9:41 PM$ gt --version
1.3.2
$ gt sync
🌲 Pulling master from remote...
UNCAUGHT EXCEPTION: fetch failed
UNCAUGHT EXCEPTION: TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11457:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Object.request (C:\Users\bkautler\AppData\Roaming\npm\node_modules\@withgraphite\graphite-cli\graphite.js:3:1303363)
at async i (C:\Users\bkautler\AppData\Roaming\npm\node_modules\@withgraphite\graphite-cli\graphite.js:3:1302781)
at async a (C:\Users\bkautler\AppData\Roaming\npm\node_modules\@withgraphite\graphite-cli\graphite.js:3:1131032)
😿Jacob Gold
04/22/2024, 8:51 PMJacob Gold
04/29/2024, 9:53 PMgt get
, gt sync
, and gt submit
. The new versions will be rolled back out with this release.
• Fixed an issue where post-checkout
hooks were swallowed, resulting in issues when interactive scripts are used.
• Fixed some typos in command output.
• gt demo
now skips all Git hooks (with an implicit global --no-verify
).
• gt sync
no longer prints out Restacking branches
if there are no branches to restack.
• Added details about troubleshooting to gt --help
.Brendan Ngo
05/22/2024, 9:21 PMgt modify
to leave descendants in an unrestacked state when there are conflicts.
• Updated gt split
behavior to skip git hooks.
• Fixed bug where local version was being overwritten by remote even when user selected no
from prompt.
• Fixed bug where remote rebase-only changes were not reconciled during gt sync
.
• Fixed bug where staged changes were incorrectly detected as unstaged.
• Fixed bug where files changed in parent directories were not detected.
• Fixed bug where children of split branches were not being tracked.
• Fixed bug where pre-push hooks were not being run from the repo root.
• Removed references to deprecated command names.Jeremías Díaz
05/23/2024, 3:31 PMBrendan Ngo
05/29/2024, 9:50 PMgt feedback
to not require to be run in a repo
• Fixed bug where a command could trigger thousands of parallel git commands at once causing spawn issues
• Fixed bug where gt get
would try to checkout a branch that was just deletedBrendan Ngo
06/06/2024, 9:16 PMgt modify
to print out conflicts when it cannot restack cleanly
• Added better error handling in gt sync/get
for server-side errors
• Fixed more cases of the bug where local version was being overwritten by remote even when user selected no
from prompt.
• Fixed bug where remote tracking errors would cause commands to fail completely
• Fixed bug where staged changes were incorrectly detected because of a stale index cacheBrendan Ngo
06/13/2024, 4:02 PMgt absorb
to print the number of hunks that were not absorbed
• Updated gt log
to not show updated remotely
since it does not respect the new sync changes
• Fixed bug where gt sync
would always ask to reconcile when there were local changesBrendan Ngo
06/18/2024, 6:00 PMgt demo
to initialize Graphite automatically if the current repo has not yet been initializedBrendan Ngo
06/28/2024, 8:47 PMgt squash
to no-op when there are no commits to squash or only a single commit
• Updated all prompt suggestions to support fuzzy searching branchesBrendan Ngo
07/10/2024, 9:10 PMgt config
> Repository-level settings
> Trunk branches
> Add additional trunk branch
. After configuring additional trunks, you can now pass in --all
to commands like log
, checkout
, move
, and sync
to see and perform actions across all your trunks. By default, we only show and sync branches for the trunk you’re currently based on. Everything else should work normally and single trunk workflows should have no affect.
NOTE: docs and guides are not up-to-date with these changes and will be updated once we move to stable
1.4.0 2024-07-03
• Major changes to the internal gt data model to support having multiple trunks at once
• Added new gt config
repository options to:
◦ Add an additional trunk
◦ Remove additional trunks
◦ Configure a local trunk to open all PRs against a different target trunk, supporting workflows where users work locally off a descendant of their remote trunk
• Updated gt trunk
to print out the current trunk name instead of checkout the trunk
• Added a --all
option to gt trunk
to print out all the configured trunks
• Added a --all
option to gt log
to show all branches across all configured trunks
• Added a --all
option to gt checkout
to show all branches across all configured trunks in the interactive selector
• Added a --all
option to gt move
to show all branches across all configured trunks in the interactive selector
• Added a --all
option to gt sync
to pull all configured trunks and sync all branches across all these trunks. By default only syncs the current trunk branches.
• Added a --target-trunk
option to gt submit
to define what trunk to open PRs against on remote.
• Updated gt sync
and gt submit
to handle cases where a merged PR’s merge commit is not actually included in the up-to-date trunk
• Updated gt init
to reset gt back to single trunk, warning the user if they have multiple trunks currently configured
• Fixed a bug during command initialization that caused the CLI to hang infinitely
1.4.1 2024-07-10
• Added a --trunk/-t
to gt checkout
to switch to the current trunk
• Fixed bug where gt sync
would try to update a trunk you don’t have configured
• Fixed bug in gt demo
that incorrectly created a “-p” directory to run the demo in
• Updated gt init --reset
to also reset PR metadata
• Reduced the maximum number of parallel git calls in order to reduce spawn errorsBrendan Ngo
08/01/2024, 10:21 PM--verbose/-v
in gt create
and gt modify
to include the diff in the commit message template
• Added a --add
flag to gt trunk
to configure an additional trunk branch
• Updated list of unmerged conflict files to print paths relative to the current working directory
• Updated gt create
to suppress the detached HEAD message on every create
• Update pre-push hook error messages to include more details
• Updated gt demo
to work in repos the user cannot submit to yet
• Fixed a bug where the branch name date prefix was incorrect in gt config
• Fixed a bug where gt submit
would not fetch the branch before submitting to determine if it needs submitting
• Fixed a bug where gt continue
would swallow the post-rewrite git hook output
• Fixed a bug where gt track
would incorrectly tell you to track the branch
• Fixed a bug where the --force
flag was not respected in gt submit
when the remote was updated
• Fixed a bug in the interactive selector with --all
where trunks could not be correctly selectedZiyao Wei
08/14/2024, 3:48 PM--stack
flag to gt checkout
to only show current stack
• Fixed a bug where gt log
and gt checkout
don’t work on untracked branches
• Fixed a bug where unsetting a trunk would not fully unset it
• Fixed a bug where gt
throws a cannot read undefined error while reading ‘validationResult’
• Fixed a bug where gt track
might get into an infinite loop while recovering diverged branches
• Improved merge conflict status to handle unstaged changes during rebasing
• Updated instructions for committing untracked files to be more clear
• Updated networking error diagnostics
• Updated gt pr
, gt docs
, and gt dash
to print out the URL being openedBrendan Ngo
09/03/2024, 2:53 PMgt unlink
command to unlink a branch from the currently associated PR
• Added better support for re-using branch names
• Added support for passing a branch name to gt info
• Added installation information to CLI releases
• Fixed a bug where rebases would not handle commits without a parent commit (e.g. original or orphaned commits)
• Fixed a bug where rebases with merge commits would cause conflicts with already merged commits
• Fixed a bug where request error logs could cause circular structure errors
• Updated gt rename
to use the correct name when asking for a rename confirmation
• Updated gt create --insert
to leave descendants in an un-restacked state when there are conflicts
• Updated gt delete
to also prune branches
• Updated pre-push git hooks to better handle running in repo rootBrendan Ngo
09/17/2024, 8:04 PMgt sync --all
would only clean up branches on the current trunk
• Improved gt submit
performance by skipping unnecessary fetches
• Improved performance of deleting branches by only deleting required metadata
• Updated gt checkout
to work while on a detached head
• Updated gt submit
to submit branches that have never been submitted with Graphite
• Updated gt sync
to better handle cases where the branch was updated outside of Graphite
• Updated gt init --trunk
to warn against setting a trunk that does not exist locally
• Updated gt sync
and gt get
to work on untracked branchesBrendan Ngo
09/27/2024, 3:30 PMgt sync
would not update trunk if there were no previously submitted branches
• Updated gt submit --branch
to work while checked out untracked branches
• Updated support for git pre-push hooks on Windows machinesBrendan Ngo
10/31/2024, 8:09 PMgt demo
that would corrupt the repo’s name and owner
• Updated sending non-info cli output to stderr instead of sending everything to stdout
1.4.8 is now in beta!
• Added additional debugging information for pr info updatesBrendan Ngo
12/10/2024, 8:46 PMBrendan Ngo
12/10/2024, 8:49 PMgt abort
and gt undo
, now in beta!
• Introduced gt abort
, which aborts the current rebase operation and restores the repository state to before the original command that introduced the conflict
• Introduced gt undo
, which undoes the most recent Graphite mutation, restoring the repository to its state before the mutation was applied.
• Fixed a bug where submitting a moved branch could temporarily result in incorrect diffs on remote
• Updated gt create
to prompt for a branch name for empty branches if one was not providedDavid Bradford
01/02/2025, 10:07 PMgraphite-base
branches if a submit fails to push to remote
• Fixed a bug where graphite-base
branches were incorrectly introduced in trailing trunk multi-trunk configurations
• Fixed a bug where gt submit
could lead to incorrect diffs upstack if submit was not run on the full stack
• Fixed a bug where gt rename
did not use configured branch prefixes
• Fixed a bug where gt
commands could fail with EAGAIN
errors
• Fixed a bug where gt delete
could fail when run on untracked branchesDavid Bradford
03/21/2025, 9:12 PM-m
flags in gt create
, gt modify
, and gt squash
.
• Provided additional context when commands fail due to Graphite maintenance and incidents.
• Use commit message for branch name if there are no staged changes.
• Updated output colors to avoid difficult to read output.
• Fixed a bug where gt feedback
could fail due to large log files.
• Fixed a bug where the remote repository could be marked as ''.
• Fixed a bug where a large number of commits can cause "Invalid string length" exceptions.
• Fixed a bug where whitespace in the repository path is not handled correctly when worktrees are used.
• Dropped official support for Node 18 in anticipation of its end-of-life date on 2024-04-30 (note: this is only a minor version bump because we don't expect any breaking changes).
• Removed gt interactive
Jacob Gold
03/26/2025, 3:46 PMgit
subprocesses.