When interactively rebasing merge commits, the commit message is parsed to extract a probably meaningful label name. For instance if the merge commit is “Merge branch 'feature0'”, then the rebase script will have thes lines: label feature0 merge -C $sha feature0 # “Merge branch 'feature0' This heuristic fails in the case of octopus merges or when the merge commit message is actually unrelated to the parent commits. An example that combines both is: *---. 967bfa4 (HEAD -> integration) Integration |\ \ | | | * 2135be1 (feature2, feat2) Feature 2 | |_|/ |/| | | | * c88b01a Feature 1 | |/ |/| | * 75f3139 (feat0) Feature 0 |/ * 25c86d0 (main) Initial commit which yields the labels Integration, Integration-2 and Integration-3. Fix this by using a branch name for each merge commit's parent that is the tip of at least one branch, and falling back to a label derived from the merge commit message otherwise. In the example above, the labels become feat0, Integration and feature2. Nicolas Guichard (2): sequencer.c: extract load_branch_decorations rebase-merges: try and use branch names as labels sequencer.c | 50 ++++++++++++++++++++++------------- t/t3404-rebase-interactive.sh | 4 +-- t/t3430-rebase-merges.sh | 12 ++++----- 3 files changed, 40 insertions(+), 26 deletions(-) base-commit: 94b60adee30619a05296cf5ed6addb0e6d4e25dc Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1784%2Fnicolas-guichard%2Fuse-branch-names-for-rebase-merges-labels-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1784/nicolas-guichard/use-branch-names-for-rebase-merges-labels-v1 Pull-Request: https://github.com/git/git/pull/1784 -- gitgitgadget