Fiquei me perguntando se existe uma maneira fácil de empurrar e puxar uma ramificação local com uma ramificação remota com um nome diferente sem sempre especificar os dois nomes.
Por exemplo:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Agora, se alguém atualizar remote_branch_name, eu posso:
$ git pull
E tudo é mesclado / encaminhado rapidamente. No entanto, se eu fizer alterações no meu "newb" local, não posso:
$ git push
Em vez disso, tenho que:
% git push origin newb:remote_branch_name
Parece um pouco bobo. Se git-pull
usa git-config branch.newb.merge
para determinar de onde retirar, por que não poderia git-push
ter uma opção de configuração semelhante? Existe um bom atalho para isso ou devo continuar o longo caminho?
fonte
git push buildserver .:test_this
onde.
deve ser o nome da filial local que eu não sei necessariamente. Eu poderia procurar, com certeza, mas se houvesse uma mão curta, como o ponto, por isso, seria legal.HEAD
é a abreviação que você está procurando.HEAD
é o que aponta para o ramo atualmente com check-out ou diretamente para um commit específico, se você tiver um cabeçalho desanexado.Updates were rejected because a pushed branch tip is behind its remote
erro para mim. Meu repo local estava atualizado, mas os nomes eram apenas diferentes.Ao fazer o push inicial, adicione o parâmetro -u :
Os empurrões subsequentes irão para onde você quiser.
EDITAR:
Conforme o comentário, isso apenas configura a atração.
deve fazê-lo.
fonte
-u
apenas define o upstream, que de acordo com a pergunta, já está definido. Ele precisa conjuntopush.default
paraupstrem
a fim de obterpush
a respeitar a definição a montante, uma vez que por padrão, somentepull
o faz.git branch --set-upstream
necessário. Nota: meugit --version
é 2.17.1.O comando de Adam agora está obsoleto. Você pode usar:
para definir a ramificação upstream de
my_local_branch
paraorigin/my_remote_branch
.fonte
Aqui está o processo que funcionou para mim.
Agora seu novo repo será 'origin' e o repo original será 'upstream'. Confirme executando git remote -v. (Observação: o upstream é usado para buscar no repositório original - para manter sua cópia local sincronizada com o projeto no qual você deseja contribuir - e a origem é usada para puxar e empurrar, já que você pode contribuir para seu próprio repositório).
git push origin master
Agora, o novo mestre de seu repo remoto (no Github) estará sincronizado com o mestre original, mas não terá nenhuma das ramificações de recursos.
Rebase é uma fusão inteligente. Em seguida, pressione para dominar novamente e você verá o ramo do recurso selecionado como mestre no novo repositório.
Opcional:
fonte
Estou com o mesmo problema há algum tempo. Finalmente tenho um conjunto de declarações, então não preciso fazer isso o
git push origin local:remote
tempo todo. Eu segui estes:Depois de configurar o upstream para uma ramificação remota com nome diferente (1ª linha) e, depois, configurá-lo como padrão (2ª linha), a 3ª linha agora obedecerá a essas regras e enviará para o upstream configurado.
fonte