Change:
It's very common to have to resolve merge conflicts during a pull with rebase. You might decide that you want to stop and try something else. There's no way, that I found, through the source control UI or command palette to properly abort a rebase. You can get into a jam trying to abort, though. Like clicking the branch button in the status bar. You can choose your local branch and have the local branch's contents restored, but Code leaves you in a rebase (and that's no good). You're stuck running on the command line. (I'll upload some pics later when I can contrive some examples... sorry, I didn't capture them while I was causing trouble earlier.)
I'd like to work on the implementation. But there are 2 options when a repository is being rebased: continue and abort. I can add two menu items right under "Pull (Rebase)": "Rebase Continue" and "Rebase Abort". Will it work from the UX perspective?
Rebase continue is already implemented: if you try to commit during a rebase, it will run rebase continue instead. All we're missing is the abort action.
So, adding "Rebase Continue" option under the "Pull (Rebase)" will be ok. Am I right?
This is good to know and takes some exploring to figure out. Are there any good patterns to explain this like during your 1st use of the feature? Or in the docs somewhere? This is a problem any time you combine git commands (like Sync).
We could maybe add that to the docs. :+1: Wanna submit a PR on ?
Hey, to this point (), I don't recall anywhere except maybe the Output | Git log that you can tell that the rebase has continued. There's no obvious status that commits are being replayed or that you may need to wait a few seconds for the next merge conflict to render in the source control explorer (if there are more conflicts) or even if the rebase is "done". You end up needing to check the Git status on the command line anyway. I think if you're going to wrap up the workflow by offering "abort", you need to make the entire experience better.
I did some exploration on supporting rebase features, which is related to this.
looks like your implementation covers git abort and my PR is not required anymore. Closing it.

Discussion:
"command": "git.timeline.copyCommitMessage", "title": "%command.timelineCopyCommitMessage%", "category": "Git" <ins> }, { "command": "git.rebaseAbort", "title": "%command.rebaseAbort%", "category": "Git" </ins> } ], "keybindings": [

"command.showOutput": "Show Git Output", "command.ignore": "Add to .gitignore", "command.revealInExplorer": "Reveal in Side Bar", <ins> "command.rebaseAbort": "Abort Rebase", </ins> "command.stashIncludeUntracked": "Stash (Include Untracked)", "command.stash": "Stash", "command.stashPop": "Pop Stash...",

env.clipboard.writeText(item.message); } <ins> @command('git.rebaseAbort', { repository: true }) async rebaseAbort(repository: Repository): Promise<void> { await repository.rebaseAbort(); } </ins> private createCommand(id: string, key: string, method: Function, options: CommandOptions): (...args: any[]) => any { const result = (...args: any[]) => {

} } <ins> async rebaseAbort(): Promise<void> { await this.run(['rebase', '--abort']); } </ins> async rebaseContinue(): Promise<void> { const args = ['rebase', '--continue'];

CheckIgnore = 'CheckIgnore', GetObjectDetails = 'GetObjectDetails', SubmoduleUpdate = 'SubmoduleUpdate', <ins> RebaseAbort = 'RebaseAbort', </ins> RebaseContinue = 'RebaseContinue', FindTrackingBranches = 'GetTracking', Apply = 'Apply',

}); } <ins> async rebaseAbort(): Promise<void> { await this.run(Operation.RebaseAbort, async () => await this.repository.rebaseAbort()); } </ins> checkIgnore(filePaths: string[]): Promise<Set<string>> { return this.run(Operation.CheckIgnore, () => { return new Promise<Set<string>>((resolve, reject) => {