You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Progress indicators are shown during slow operations, which can be helpful when working in large repositories.
The long-term goal is to significantly speed up those operations by improving on the implementations offered in libgit2.
When you rebase your work onto the main branch, git move will now clean up (delete) branches which point to commits which have been applied upstream. This means you can sync a local commit stack with e.g. git move -b <branch> -d master, and any already-merged branches will be automatically deleted.
The later goal is to have a git sync command which will bring all of your local-branches up to date.
If a branch was deleted in error, you can always get it back with git undo.
Changelog
Added
git move now supports forcing an in-memory rebase with the --in-memory flag.
The reference-transaction hook prints out which references were updated.
git restack can now accept a list of commit hashes whose descendants should be restacked, rather than restacking every abandoned commit indiscriminately.
git move will skip applying commits which have already been applied upstream, and delete their corresponding branches.
Progress indicators are now displayed when git-branchless takes longer than 250ms to complete.
Changed
BREAKING: git-branchless is now licensed under the GPL-2.
More of the Git hooks installed by git-branchless display the affected objects, rather than just the number of affected objects.
git move with no --source or --base option now defaults to --base HEAD rather than --source HEAD.
Fixed
The output of git subcommands is streamed to stdout, rather than accumulated and dumped at the end.
Commits rebased in-memory by git move are now marked as reachable by the Git garbage collector, so that they aren't collected prematurely.
git-branchless wrap correctly relays the exit code of its subprocess.
Some restack and move operations incorrectly created branches without the necessary refs/heads/ prefix, which means they weren't considered local branches by Git.
Some restack and move operations didn't relocate all commits and branches correctly, due to the experimental git move backend. The backend has been changed to use a constraint-solving approach rather than a greedy approach to fix this.
git move preserves committer timestamps when branchless.restack.preserveTimestamps is set. The configuration key may change in the future.
If your currently-checked-out commit was rewritten during a git move operation, it now checks out the new version of the commit, rather than leaving you on an old, hidden commit.
If your current stack had another stack branching off of it, and git move --base was passed a commit that other stack, it would fail with a cyclic dependency error. It now clips off the unique part of the branch and moves it.
If an on-disk rebase would occur (such as the result of git move or git restack), but you have uncommitted changes in your working copy, the rebase is aborted and a warning is printed, rather than potentially clobbering your changes.