Skip to content
  • Denton Liu's avatar
    rebase: teach rebase --keep-base · 414d924b
    Denton Liu authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    A common scenario is if a user is working on a topic branch and they
    wish to make some changes to intermediate commits or autosquash, they
    would run something such as
    
    	git rebase -i --onto master... master
    
    in order to preserve the merge base. This is useful when contributing a
    patch series to the Git mailing list, one often starts on top of the
    current 'master'. While developing the patches, 'master' is also
    developed further and it is sometimes not the best idea to keep rebasing
    on top of 'master', but to keep the base commit as-is.
    
    In addition to this, a user wishing to test individual commits in a
    topic branch without changing anything may run
    
    	git rebase -x ./test.sh master... master
    
    Since rebasing onto the merge base of the branch and the upstream is
    such a common case, introduce the --keep-base option as a shortcut.
    
    This allows us to rewrite the above as
    
    	git rebase -i --keep-base master
    
    and
    
    	git rebase -x ./test.sh --keep-base master
    
    respectively.
    
    Add tests to ensure --keep-base works correctly in the normal case and
    fails when there are multiple merge bases, both in regular and
    interactive mode. Also, test to make sure conflicting options cause
    rebase to fail. While we're adding test cases, add a missing
    set_fake_editor call to 'rebase -i --onto master...side'.
    
    While we're documenting the --keep-base option, change an instance of
    "merge-base" to "merge base", which is the consistent spelling.
    
    Helped-by: default avatarEric Sunshine <sunshine@sunshineco.com>
    Helped-by: default avatarJunio C Hamano <gitster@pobox.com>
    Helped-by: default avatarÆvar Arnfjörð Bjarmason <avarab@gmail.com>
    Helped-by: default avatarJohannes Schindelin <Johannes.Schindelin@gmx.de>
    Signed-off-by: default avatarDenton Liu <liu.denton@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    414d924b