init checkout-commit branching merge branches conflict pull-push rebase