Additional Git commands for easier branch management and support for stacked changes
git town set-parent
is now a proper Git Town command, with continue and undo (#3407).git town set-parent
now properly defaults to the existing parent (#3406).Big thanks to @charlierudolph, @ericyliu, @hammenm, @hmbrg, @kevgo, @KORDayDream, @StevenXL, @vectro, @zifeo for contributing code, ideas, and feedback to 23 shipped PRs and 7 resolved issues!
Besides polishing the git town switch
command, Git Town 14.1 focuses on stability improvements and bashing bugs. We closed out 50% of all open tickets (70 tickets), including many long-standing bugs!
This version also de-emphasizes git ship
. Most people should not run git ship
. The recommended workflow is to ship feature branches using the web UI or merge queue of your code hosting platform. git ship
is for edge cases like development in offline mode.
git town switch
now has an -m
option that checks out the selected branch using git checkout -m (#3321).git town switch
now doesn't allow selecting branches that are checked out in other Git worktrees (#3295).git town switch
now indicates the existence of uncommitted changes. This helps remember to commit them on the current branch if that was needed (#3307).Ctrl-C
to cancel a Git command that runs too long or hangs (#414).remotes/origin/HEAD
to determine the default main branch if the already used init.defaultbranch
setting isn't set (#646).git ship
now sqash-merges using the --ff
option. This removes an incompatibility for users who have the merge.ff
option set to false
in their Git configuration (#1097).git sync
now ends on the previously checked out branch when pruning branches (#2784).git sync --all
now syncs in topological order. This ensures all branches in deep stacks get synced (#3344).git town switch
no longer displays branches that were deleted manually (#3361).git kill
now checks out the main branch when the previous branch also was killed (#3358).Massive thanks to @abhijeetbhagat, @aeneasr, @allewun, @alphatroya, @amarpatel, @avaz, @breml, @bryanlarsen, @charlierudolph, @ChrisMM, @cirego, @ericyliu, @grignaak, @hammenm, @hmbrg, @JCB-K, @kevgo, @koppor, @KORDayDream, @martinjaime, @mball-agathos, @mribichich, @ruudk, @sascha-andres, @sheldonhull, @tranhl, @vectro, @WhosNickDoglio, @WurmD, @zeronacer, @zifeo for contributing code, ideas, and feedback to 74 shipped PRs and 70 resolved issues!
Git Town 14.0 improves the developer experience around uncommitted and stacked changes.
git hack
, git append
, and git prepend
no longer sync the branch lineage in the presence of uncommitted changes. This allows you to commit your changes first before pulling in more changes from other developers. They still sync if you call them without uncommitted changes (#3198).
git town compress
(aliasable to git compress
by re-running git town config setup
) squashes all commits in a branch into a single commit. By default the new commit uses the commit message of the first commit in the branch. You can provide a custom commit message using the -m
switch the same way as in git commit
. The --stack
option compresses all branches in a change stack. Git Town does not compress perennial, observed, contribution, and non-active parked branches (#1529, #2086).
git hack
, git append
, and git prepend
are faster due to creating and checking out the new branch using a single Git operation (#3313).
Big thanks to @blaggacao, @breml, @gabyx, @kevgo, @mball-agathos, @nishchay-manwani-glean, @pjh, @ruudk, @tranhl, @utkinn, and @WhosNickDoglio for contributing code, ideas, and feedback to 68 shipped PRs and 7 resolved issues!
Heartfelt thanks to @breml and @kevgo for going the extra mile to investigate a tricky bug and contributing to 25 shipped PRs and 4 resolved issues!
Many thanks to @alexus37, @breml, @bryanlarsen, @kevgo, @tranhl, @vectro, @wederbrand for contributing feedback, ideas, and solutions to 8 shipped PRs and 6 resolved issues!
Git Town 13.0 adds better support for syncing feature branches after rebasing/amending commits.
When the sync-feature-strategy is set to rebase
, Git Town now force-pushes your locally rebased commits to the tracking branch (#3182). This avoids mixing locally rebased commits with outdated commits on the tracking branch. To not accidentally override new commits on the tracking branch that haven't been integrated into your local commits, Git Town now force-pushes using the --force-if-includes Git flag.
This requires raising the minimally required Git version from 2.7 to 2.30. Git 2.30 was released over 2 years ago and should be widely available at this point.
git town
instead of git-town
on the CLI (#3208).Kudos to @100rab-S, @dgentry, @kevgo, @koppor, @nicksieger, @ruudk, @srstevenson, and @tranhl for contributing code, ideas, and feedback to 18 shipped PRs and 13 resolved issues!
Git Town 12.1 implements some of the most requested features by the Git Town community. It also continues the modernization of Git Town's internals. This time we made Git Town's undo engine simpler, more robust, and more reliable by removing all remaining mutable state.
git contribute
, git observe
, and git park
. More info at https://www.git-town.com/advanced-syncing and #3095.branches.perennials
. This makes it easier to deal with situations where you have many perennial branches with similar sounding names like release-1
, release-2
, etc (#2659).Many thanks to @100rab-S, @harrismcc, @kevgo, @ruudk, @tranhl for contributing feedback, ideas, and solutions to 70 shipped PRs and 11 resolved issues!
Big thanks to @ruudk for helping identify the missing pagination for dialogs thanks to his plentiful local Git branches!
Git Town 12 continues the effort to make the Git Town user experience more consistent and intuitive by modernizing Git Town's configuration system.
git town config remove
instead of git town config reset
(#3051).git town offline yes
to enable offline mode instead of git town config offline yes
(#3049).git town config setup
. This assistant replaces the old configuration commands under git town config
, the alias
command, and the old "quick configuration" process..git-branches.toml
(#2748). The best way to create one is the setup assistant. The setup assistant can also migrate your existing Git-based configuration to the config file.--dry-run
flag to try them out safely (#2859).choco install git-town
(#763)--version
command on Windows (#2900).A heartfelt thanks to the contributors for this release: @alokpr, @brandonaut, @bryanlarsen, @ChrisMM, @eugef, @IGassmann, @Iron-Ham, @jakeleboeuf, @JaKXz, @kevgo, @koppor, @Nezteb, @ruudk, @zeronacer