Skip to content
  • Conrad Irwin's avatar
    Prevent force-updating of the current branch · 55c4a673
    Conrad Irwin authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    "git branch -M <foo> <current-branch>" allows updating the current branch
    which HEAD points, without the necessary house-keeping that git reset
    normally does to make this operation sensible. It also leaves the reflog
    in a confusing state (you would be warned when trying to read it).
    
    "git checkout -B <current branch> <foo>" is also partly vulnerable to this
    bug; due to inconsistent pre-flight checks it would perform half of its
    task and then abort just before rewriting the branch. Again this
    manifested itself as the index file getting out-of-sync with HEAD.
    
    "git branch -f" already guarded against this problem, and aborts with
    a fatal error.
    
    Update "git branch -M", "git checkout -B" and "git branch -f" to share the
    same check before allowing a branch to be created. These prevent you from
    updating the current branch.
    
    We considered suggesting the use of "git reset" in the failure message
    but concluded that it was not possible to discern what the user was
    actually trying to do.
    
    Signed-off-by: default avatarConrad Irwin <conrad.irwin@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    55c4a673