Eu criei um ramo local que eu quero 'empurrar' rio acima. Há uma pergunta semelhante aqui no Stack Overflow sobre como rastrear uma ramificação remota recém-criada.
No entanto, meu fluxo de trabalho é um pouco diferente. Primeiro , quero criar uma ramificação local e só a empurro para cima quando estiver satisfeito e quiser compartilhar minha ramificação.
- Como eu faria isso? (minhas pesquisas no Google não pareciam ter nada).
- Como eu diria aos meus colegas para retirá-lo do repositório upstream?
ATUALIZAÇÃO Com o Git 2.0, há uma resposta mais simples que escrevi abaixo: https://stackoverflow.com/a/27185855/109305
git
branch
git-branch
Jesper Rønn-Jensen
fonte
fonte
get fetch --all
busca as novas ramificações no lado remoto (mas apenas aget fetch --prune
exclui localmente as referências às ramificações remotas excluídas). Eu acho que, ou isso deve ser configurado por eles automaticamente, ou você precisa falar com eles verbalmente.Respostas:
Primeiro, você cria sua filial localmente:
A ramificação remota é criada automaticamente quando você a envia para o servidor remoto. Então, quando você se sentir pronto, poderá:
Onde
<remote-name>
está normalmenteorigin
, o nome que o git atribui ao controle remoto do qual você clonou. Seus colegas simplesmente puxariam esse ramo, e ele será criado automaticamente localmente.Observe, porém, que formalmente, o formato é:
Mas quando você omite um, ele assume que os dois nomes de ramificações são iguais. Dito isto, como uma palavra de cautela , não cometa o erro crítico de especificar apenas
:<remote-branch-name>
(com dois pontos), ou o ramo remoto será excluído!Para que um subseqüente
git pull
saiba o que fazer, você pode querer usar:Conforme descrito abaixo, a
--set-upstream
opção configura uma ramificação upstream:fonte
git push <remote>
, não enviar por push se o branch não estiver presente<remote>
.git push -u <remote-name> <branch-name>
vez disso, para que um subsequentegit pull
saiba o que fazer.origin
, o que significa "o servidor do qual recebi o restante deste repositório": assimgit push origin <branch-name>
.-u
opção, basta digitargit push -u
posteriormente no ramo e, em seguidagit pull
, funcionará.git push -u origin <local-branch-name>
foi o que funcionou para mim.Primeiro, você deve criar sua filial localmente
Depois disso, você pode trabalhar localmente em sua filial, quando estiver pronto para compartilhar a filial, pressione-o. O próximo comando envia a ramificação para a origem do repositório remoto e a rastreia
Os colegas de equipe podem alcançar seu ramo, fazendo:
Você pode continuar trabalhando na ramificação e pressionando sempre que desejar, sem passar argumentos para o git push (o git push sem argumentos enviará o master para o master remoto, your_branch local para remote your_branch, etc ...)
Os colegas de equipe podem enviar para o seu ramo fazendo confirmações e depois enviar explicitamente
Ou rastreando o ramo para evitar os argumentos de git push
fonte
Solução simples Git 2.0+:
A partir do Git 2.0, o comportamento tornou-se mais simples :
Você pode configurar o git com
push.default = current
para facilitar a vida:Eu adicionei isso agora eu posso simplesmente empurrar um novo ramo a montante com
-u
rastreará ramificação remota com o mesmo nome. Agora, com essa configuração, você adivinhará automaticamente a referência remota ao git push. Da documentação do git.config :Para mim, essa é uma boa simplificação do meu fluxo de trabalho diário do Git. A definição de configuração cuida do caso de uso 'usual' em que você adiciona uma ramificação localmente e deseja criá-la remotamente. Além disso, também posso criar ramificações locais a partir de controles remotos com a mesma facilidade
git co remote_branch_name
(em vez de usar o--set-upstream-to
sinalizador).Sei que esta pergunta e as respostas aceitas são bastante antigas, mas o comportamento mudou, de modo que agora existem opções de configuração para simplificar o seu fluxo de trabalho.
Para adicionar à sua configuração global do Git, execute isso na linha de comando:
fonte
git push -u origin HEAD
que aqui respondi um pouco mais detalhado (você escreve o que está fazendo) sem precisar digitar demais. Além disso, umgit push -u
sem argumentos adicionais não funcionou para mim se o ramo foi criado com-t
git config --global push.default upstream && git checkout -b foo && <change a file> && git push -u
não funciona (a partir do git 2.19.1); push requer os argumentos remote e branch.git co remote_branch_name
?Conforme indicado nas respostas anteriores,
é suficiente para enviar uma filial local.
Seus colegas podem obter todas as ramificações remotas (incluindo novas) com este comando:
Então, para fazer alterações na ramificação, o fluxo usual:
fonte
Crie uma nova ramificação localmente com base na ramificação atual:
Confirme as alterações normalmente. Em seguida, empurre-o a montante:
Este é um atalho para enviar a ramificação atual para uma ramificação com o mesmo nome
origin
e rastreá-la, para que você não precise especificarorigin HEAD
no futuro.fonte
git push -u origin HEAD
. Eu acho que é a maneira mais clara.git status
primeiro.git remote show origin
como um terceiro passo apenas para visualizar o novo relacionamento de rastreamento / rastreamento.Se você deseja criar uma ramificação a partir da ramificação atual
você quer uma ramificação de uma ramificação remota, pode tentar
Se você concluir as alterações, poderá adicionar o arquivo.
Em seguida, faça uma confirmação localmente
Quando você deseja enviar para um repositório remoto
Todos juntos serão
ou Se você deseja criar uma ramificação a partir de uma ramificação remota, diga development
origem / desenvolvimento do git checkout -b bug_fixes
Você pode enviar para a filial para repo remoto,
Sempre que você quiser atualizar sua filial de qualquer outra filial, diga master .
git pull origin master
.fonte
Se você deseja apenas criar uma filial remota sem a local, você pode fazer assim:
Empurra o que quer que seja o seu HEAD para ramificar foo que não existia no controle remoto.
fonte
Solução mais fácil ... Drumm Roll ... git versão 2.10.1 (Apple Git-78)
NB - A ramificação que você acabou de criar no ambiente local e a ramificação remota e inexistente na qual você está tentando enviar devem ter o mesmo nome .
fonte
git push -u
é muito mais fácil. Requer que você tenha uma linha de configuração global, consulte stackoverflow.com/a/27185855/109305 . Eu usogit push -u
constantemente, ele cobre 99% dos meus casos de uso ao trabalhar.[Resposta rápida]
Você pode fazer isso em duas etapas:
1. Use o
checkout
para criar a ramificação local:2. Use o
push
comando para criar automaticamente a ramificação e enviar o código ao repositório remoto:fonte
Primeiro você cria a ramificação localmente:
E, em seguida, para criar a ramificação remotamente:
Nota: Isso funciona nas versões mais recentes do git:
Felicidades!
fonte
git push
quando sua ramificação local não é rastreada por um controle remoto.Empurre o ramo no github:
Quando você deseja confirmar algo em sua ramificação, certifique-se de estar em sua ramificação.
Você pode ver todos os ramos criados usando:
O que mostrará:
Adicione um novo controle remoto para sua filial:
Envie as alterações do seu commit para o seu branch:
Atualize sua filial quando a filial original do repositório oficial for atualizada:
Então você precisa se inscrever para mesclar alterações, se sua ramificação for derivada do desenvolvimento, você deverá fazer:
Exclua uma ramificação no seu sistema de arquivos local:
Para forçar a exclusão da ramificação local no seu sistema de arquivos:
Exclua a ramificação no github:
Aqui todas as informações
Outro projeto existente
fonte
Criando uma ramificação local a partir de uma ramificação existente (pode ser master / develop / any-other-branch).
Envie isso para o controle remoto
Aqui,
Se removermos os nomes das filiais local e remota, ele terá o formato
Isso enviará a ramificação local para remoto e com o mesmo nome que a ramificação local branch_name. A filial local também rastreará a filial remota.
fonte
Sei que esta pergunta está bem respondida, mas só queria listar as etapas que segui para criar uma nova ramificação "myNewBranch" e enviar para remoto ("origem" no meu caso) e configurar o rastreamento. Considere isso a versão "TL; DR" :)
fonte
Agora, com o git, você pode digitar apenas quando estiver no ramo correto
git push --set-upstream origin <remote-branch-name
>e o git cria para você o ramo de origem.
fonte
Só queria adicionar isso enquanto:
Cria um novo ramo, também faz check-out desse ramo / o torna seu ramo atual. Se, por algum motivo, tudo o que você deseja fazer é desativar uma ramificação, mas não torná-la sua ramificação atual, use o seguinte comando:
No primeiro comando, "checkout" torna esse ramo seu ramo atual e o "-b" significa: esse ramo ainda não existe, portanto, faça isso por mim.
fonte
Como fazer através da Árvore de Origem
fonte
git push -u <remote-name> <branch-name>
não funcionará se o ramo recém-criado não for gerado no mesmo repositório, ou seja, se você não tiver criado o novo ramo usandogit checkout -b new_branch
, isso não funcionará.Por exemplo, eu clonei dois repositórios diferentes localmente e tive que copiar o repo2 / branch1 para o repo1 / e depois enviá-lo também.
Esse link me ajudou a enviar minha filial local (clonada de outro repositório) para o repositório remoto:
fonte
Aqui está como você faz isso em eclipse através do Egit.
1) Acesse a visualização "Git Repository Exploring" e explore o projeto git no qual deseja criar uma ramificação. Em Ramos -> Local .. selecione o ramo para o qual você deseja criar o ramo (no meu caso, selecionei mestre. Você pode selecionar outro ramo, se desejar) .. clique com o botão direito do mouse e clique na opção Criar ramo. selecione a opção de finalização do projeto e clique no botão Concluir.
2) Agora, no explorador de projetos, selecione o projeto. Clique com o botão direito do mouse em Equipe -> Empurrar Ramificação.
Uma nova ramificação remota será criada. Você pode dar o nome da ramificação aos seus colegas para que eles possam obtê-la.
fonte
Eu usei duas maneiras de criar ramo
Se você estiver usando o TortoiseGit, siga estas etapas: -
1.Criar Ramificação usando o TortoiseGit
2.Empurre o ramo
3.Alterar para nova ramificação
Se você estiver usando o prompt de comando, siga estas etapas: -
Criar uma ramificação usando o prompt de comando
2.Empurre o ramo
3.Mude para o novo ramo, ele já será alterado para new_branch_name, caso contrário você poderá usar
fonte
Eu uso isso e é bastante útil:
Você nem precisa do status git; talvez, eu só quero ter certeza de que tudo está indo bem ...
Você pode ter ambas as ramificações LOCAL e REMOTE com um único comando.
fonte