We've seen some weird consequences which appear to be from setting the base=main push option all the time - it's better to use some aliases or something to set the options only when needed...
···5959git push origin HEAD:my-new-branch -o base=main
6060```
61616262-If you want to always pick `main` by default you can set this in your
6363-repository-specific *git* config
6262+If you're using a git frontend (e.g. [Jujutsu](https://jj-vcs.github.io/jj))
6363+which does not allow you to set push options, you may find it useful to
6464+temporarily set them through the git configuration while performing git
6565+operations. In Jujutsu, you might do that through these aliases:
64666565-```bash
6666-git config push.pushOption 'base=main'
6767+```toml
6868+[aliases]
6969+josh-push-base-main = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption base=main && jj git push "$@"; git config --unset push.pushOption', '--' ]
7070+josh-push-create = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption create && jj git push "$@"; git config --unset push.pushOption', '--' ]
7171+josh-push-force = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption force && jj git push "$@"; git config --unset push.pushOption', '--' ]
7272+josh-push-merge = [ 'util', 'exec', '--', 'sh', '-c', 'git config push.pushOption merge && jj git push "$@"; git config --unset push.pushOption', '--' ]
6773```
68746969-Setting this in your *git* config may also be useful if
7070-you're using an alternative *git* frontend, for example
7171-[*Jujutsu*](https://jj-vcs.github.io/jj/latest/), which does not provide the
7272-ability to set push-options when pushing to git remotes
7575+You must make sure you always unset the push option, even if your push failed.
7676+Pushing with unexpected push options can cause accidental and annoying-to-fix
7777+actions to be taken on your behalf
73787479### Signing commits
7580