---
name: "git-bisect-rebase"
section: "1"
platform: "linux"
package: "man-pages"
version: "6.20-1"
release: "Arch Linux 2026-11-07"
platforms: ["linux"]
url: "https://carta.tech/man/git-bisect-rebase"
---

# git-bisect-rebase(1)

Rebase a branch bisecting to find conflicting commits

## NAME

git-bisect-rebase - Rebase a branch bisecting to find conflicting commits

## SYNOPSIS

**git bisect-rebase** \[*option* ...\] \[*upstream* \[*branch*\]\]

**git bisect-rebase** \[*--abort*\|*--continue*\|*--quit*\]

## DESCRIPTION

[**git-bisect-rebase**(1)](/man/git-bisect-rebase/1.md) rebases *branch* on top of *upstream* progressively, stopping at each commit from *upstream* which introduces a conflict.

It uses [**git-bisect**(1)](/man/git-bisect/1.md) to find the conflicts efficiently, and [**git-rebase**(1)](/man/git-rebase/1.md) to perform the rebase operations.

## PARAMETERS

*upstream* and *branch* are interpreted as if by [**git-rebase**(1)](/man/git-rebase/1.md).

## OPTIONS

### Mode options

- **--abort**

  Abort the bisect-rebase operation and reset HEAD to the original *branch*.

- **--continue**

  Restart the bisect-rebase process after having resolved a rebase conflict.

- **--quit**

  Abort the bisect-rebase operation, but HEAD is not reset.

### git-bisect(1) options

The following options are interpreted as if by [**git-bisect**(1)](/man/git-bisect/1.md).

- **--first-parent**

  ### git-rebase(1) options

The following options are interpreted as if by [**git-rebase**(1)](/man/git-rebase/1.md).

- **--rebase-merges**\[=*arg*\] **-r** **--no-rebase-merges** **--apply** **--empty**=*arg* **--**\[**no-**\]**keep-empty** **--**\[**no-**\]**reapply-cherry-picks** **--**\[**no-**\]**allow-empty-message** **--merge** **-m** **--strategy**=*arg* **-s** *arg* **--strategy-option**=*arg* **-X** *arg* **--**\[**no-**\]**rerere-autoupdate** **--gpg-sign**\[=*arg*\] **-S***arg* **--no-gpg-sign** **--quiet** **-q** **--verbose** **-v** **--**\[**no-**\]**stat** **-n** **--**\[**no-**\]**verify** **-C***arg* **--no-ff** **--force-rebase** **-f** **--**\[**no-**\]**ignore-whitespace** **--**\[**no-**\]**update-refs** **--exec**=*arg* **-x** *arg*

  ### Other options

- **--pre-exec**=*cmd*

  Run *cmd* at the target commit found by [**git-bisect**(1)](/man/git-bisect/1.md), before every [**git-rebase**(1)](/man/git-rebase/1.md) operation. The exit code will be interpreted as if by *git bisect run cmd*.

- **--post-exec**=*cmd*

  Run *cmd* after a [**git-rebase**(1)](/man/git-rebase/1.md) operation finishes successfully. The exit code will be interpreted as if by *git bisect run cmd*.

## EXAMPLES

### Rebasing a single branch

Algorithm for rebasing a branch 'x' on top of 'master'.

```
git bisect-rebase master x;
#	if no conflicts, done
#	loop:
#	resolve conflicts
git rebase --continue;
git bisect-rebase --continue;
#	... rinse and repeat (goto loop)
```

### Rebasing a tree of branches

Algorithm for rebasing a tree of branches on top of 'master'. Consider a branch 'A', with two childs 'B' and 'C'.

```
#	loop:
git bisect-rebase master A;
#	if no conflicts, goto children
git rebase --abort;
git bisect-rebase --quit;
#	children:
git bisect-rebase A B;
#	follow algorithm for single branch with master=A and x=B
git bisect-rebase A C;
#	follow algorithm for single branch with master=A and x=C
#	if 'goto children' above, done
git tag tmpA;
git bisect-rebase master A;
#	resolve conflicts
git rebase --continue;
git bisect-rebase --quit;
git rebase --onto A tmpA B;
#	resolve conflicts, if any
git rebase --onto A tmpA C;
#	resolve conflicts, if any
git tag -d tmpA;
#	... rinse and repeat (goto loop)
```

## SEE ALSO

[**git-bisect**(1)](/man/git-bisect/1.md), [**git-rebase**(1)](/man/git-rebase/1.md)
