Sublime Forum

Feature request: interactive rebase

#1

Thanks so much for creating Sublime Merge! I’m really enjoying it so far, although the interface has certainly taken some getting used to (previously was using Git Tower, until their user-unfriendly pricing went into effect with the latest update). One thing that I miss from Tower is the ability to kick off an interactive rebase; for instance, I might select my last 4 commits, right click, and choose “Rebase” to pick/squash/etc. with those 4 commits).

Alternately, it would be brilliant if it were possible to run arbitrary git commands from the Command Palette (or at minimum open up a new Terminal window with the directory automatically set to the current project directory in Sublime Merge).

7 Likes

#2

With the proviso that the following probably isn’t in the spirit of what you actually intended, In a sense this is currently possible in that there is a git command that executes git with the arguments that you provide. For example, you can add the following to the command palette if you want to view the reflog (Note: you need to click the icon in the info bar to the left of the current branch name in order to view the output) :

{
    "caption": "Show Reflog",
    "command": "git",
    "args": {
        "argv": ["reflog"]
    }
}

The downside being that it’s not truly arbitrary because you need to decide ahead of time what commands you want to execute, and you can’t (currently) set up something interactive like selecting the branch to use in the command and so on.

0 Likes

#3

you can shift select the commits in question,
right click > Edit Commit > squash with parent

2 Likes

Feature Request: First-Class View for Reflog
#4

Thanks for the suggestions! I’ll give right click squashing a shot next time I need a simple rebase, though an in-app interactive rebase would still be awesome (since that’s a lot more flexible).

1 Like

#5

Yes, a nice UI for Interactive rebase is sorely needed IMO.

2 Likes

#6

I agree this would be a wonderful feature. It’s a lot more pleasant than counting commits or selecting the revision to rebase back to.

0 Likes

#7

After creating a fixup commit, whose message doesn’t even need to start with fixup! you can do an interactive rebase via Edit Commit submenu.

From 1085 on you can just select 2 or more commits and squash them together with or without including the newer commit messages.

2 Likes

#8

While I like that, it would be nice if I could just right-click on a commit and select “Start interactive rebase in terminal” or similar and have all my fixup commits be reordered automatically. I tried adding an item to the context menu since it appears the necessary variables are provided, but I wasn’t able to find a command that allows me to start arbitrary programs (my terminal in this case).

2 Likes

#9

Hello, is there some update about this feature? Some rough eta?

0 Likes

#10

Interactive Rebase is available via the Edit Commit context menu when right clicking on a commit.

0 Likes

#11

Fair enough, but that’s really only a limited (both in functionality and ease of use) subset of standard interactive rebasing as launched in the external editor by git. See https://github.com/sublimehq/sublime_merge/issues/357#issuecomment-472350249 for a typcial example of how we use this. Edit Commit isn’t a match for that.

2 Likes

#12

SourceTree has a decent implementation of interactive rebase that I think SM could improve upon: https://www.atlassian.com/blog/sourcetree/interactive-rebase-sourcetree

1 Like

#13

I really miss the ability to drop single commits or limit the number of commits to include into the rebase.

0 Likes

#14

I’ve managed to do some pretty hairy rebases using the “Edit commit” menu option. It’s not as direct as a standard interactive rebase, though. It takes a few more steps. Usually I select the commits to drop then do that. Reorder the commits if needed (that is an area that is slow since each “Move up/down” is a separate rebase) then select the commits to squash and run the “Squash fixup”. What would help is being able to specify these operations to be batched into one rebase. What would be truly awesome is the ability to drag commits to order, right click to mark them as fixup/squash then provide the interactive rebase as the git cli does to allow you to tweak. So yes, it would be nice to have an “advanced” option to batch and edit the rebase steps. Has anyone opened a feature request on the issue tracker yet? I guess I should have read the link above about the sourcetree implementation. Yeah. That but better.

1 Like

#15

SmartGit also have a great rebase experience.
It never fails and let the user decide, using a diff editor, what to do with conflicts.

0 Likes