Estou trabalhando em um repositório git local. Existem dois ramos, master
e feature_x
.
Quero enviar feature_x
para o repositório remoto, mas não quero enviar as alterações na master
ramificação.
Um git push origin feature_x
da minha feature_x
filial (a feature_x
filial já existe no remoto) funcionará?
Eu não quero testar isso na minha caixa, porque não posso pressionar para dominar agora.
Respostas:
sim, faça o seguinte
fonte
git push -u origin <branch-name>
. No entanto, você não mencionou. Isso é necessário ?-u
opção em umgit-push
comando definirá a referência upstream para rastrear o ramo que acabou de ser enviado. Isso fará com que coisas comogit-pull
esse ramo no futuro já saibam de qual ramo extrair sem especificá-lo. Não é necessário, como opção, enviar por push uma única ramificação, mas é amplamente usado porque muitas pessoas desejam fazer com que a filial local rastreie a ramificação remota que eles estão enviando.Por padrão,
git push
atualiza todas as ramificações remotas. Mas você pode configurar o git para atualizar apenas o ramo atual para o upstream.Isso significa que o git atualizará apenas a ramificação atual (registrada) quando você fizer o git push.
Outras opções válidas são:
nothing
: Não envie nada (erro), a menos que um refspec seja fornecido explicitamente . Isso se destina principalmente a pessoas que desejam evitar erros sempre sendo explícitos.matching
: Empurre todos os ramos com o mesmo nome nas duas extremidades. (opção padrão anterior à versão 1.7.11)upstream
: Envie a ramificação atual para a ramificação upstream. Este modo só faz sentido se você estiver empurrando para o mesmo repositório do qual normalmente retiraria (ou seja, fluxo de trabalho central ). Não é necessário ter o mesmo nome para filial local e remota.tracking
: Descontinuado, use emupstream
vez disso.current
: Envie a ramificação atual para a ramificação remota com o mesmo nome na extremidade de recebimento. Funciona em fluxos de trabalho centrais e não centrais.simple
: [disponível desde a versão 1.7.11] no fluxo de trabalho centralizado, trabalhe comoupstream
uma segurança adicional para se recusar a enviar por push se o nome da filial upstream for diferente do local. Ao empurrar para um controle remoto diferente do que você normalmente puxa, trabalhe comocurrent
. Esta é a opção mais segura e é adequada para iniciantes. Este modo se tornou o padrão no Git 2.0.fonte
current
era o que eu estava procurando, por padrãogit push
nofoo
ramo irá empurrá-lo para oorigin/foo
ramo.current
faz mais sentido como padrão.simple
faz mais sentido como padrão. Atualizei a resposta com 'quando usar o quê'. Pls dê uma olhada.simple
.Atualização secundária sobre a resposta do Karthik Bose - você pode configurar o git globalmente, para afetar todos os seus espaços de trabalho a se comportarem dessa maneira:
fonte
Então, digamos que você tenha uma filial local foo, uma origem chamada remota e uma origem / mestre remota.
Para enviar o conteúdo de foo para origin / master, primeiro é necessário configurar o upstream:
Em seguida, você pode enviar para esse ramo usando:
No último comando, você pode adicionar --force para substituir todo o histórico de origem / mestre pelo do foo.
fonte