Tenho um fluxo de trabalho em que as ramificações locais acabam com nomes que eu realmente não quero que fiquem visíveis no repositório remoto. Gostaria de definir o nome upstream ao criar a ramificação local , para não precisar me lembrar de fazer isso ao usar git push
.
Analisei muitas perguntas/respostas aqui e vi duas recomendações para definir nomes de ramificações upstream:
- Usar
git config --local remote.origin.push LOCAL_BRANCH:REMOTE_BRANCH
- Usar
git branch --set-upstream-to REMOTE_BRANCH
- Usar
git push -u
ougit push origin LOCAL_BRANCH:REMOTE_BRANCH
O primeiro "mais ou menos funciona" porque, se eu enviar o branch local, ele quer enviar para o branch remoto esperado, mas também redefine qualquer valor existente naquela entrada de configuração, o que eu não quero.
O segundo não funciona quando o branch remoto não existe, me dando:
fatal: the requested upstream branch 'foobar' does not exist
hint:
hint: If you are planning on basing your work on an upstream
hint: branch that already exists at the remote, you may need to
hint: run "git fetch" to retrieve it.
hint:
hint: If you are planning to push out a new local branch that
hint: will track its remote counterpart, you may want to use
hint: "git push -u" to set the upstream config as you push.
hint: Disable this message with "git config advice.setUpstreamFailure false"
E o terceiro obviamente não é o que estou procurando, porque quero que isso ocorra no momento da criação da ramificação.
Tentei enviar para um novo controle remoto (com nome diferente) e configurei para que as seguintes entradas aparecessem na configuração local:
branch.foo.remote=origin
branch.foo.upstream=foobar
branch.foo.merge=refs/heads/foobar
Mas, se eu removê-los e recriá-los manualmente com um nome diferente, quando eu os envio (sem -u
), ele só quer usar o nome do branch local.
Então estou começando a achar que não existe uma maneira realmente boa de fazer isso.
Só para reiterar, o que eu quero é:
Uma maneira de configurar uma nova ramificação local para ter um nome de ramificação remota diferente quando for enviada pela primeira vez, sem precisar definir explicitamente esse nome quando for enviada pela primeira vez
Isso é possível?
EDIT: Acontece que, embora a resposta fornecida funcione para a linha de comando do git, ela não parece funcionar no IntelliJ (talvez o IntelliJ armazene em cache as informações de configuração do git?).