Quero poder fazer o seguinte:
Crie uma filial local com base em outra filial (remota ou local) (via
git branch
ougit checkout -b
)Envie a ramificação local para o repositório remoto (publicação), mas torne-a rastreável
git pull
egit push
funcionará imediatamente.
Como faço isso?
Eu conheço o --set-upstream
Git 1.7, mas essa é uma ação pós-criação. Quero encontrar uma maneira de fazer uma alteração semelhante ao enviar a ramificação para o repositório remoto.
git
repository
git-branch
git-push
git-remote
Roni Yaniv
fonte
fonte
Respostas:
No Git 1.7.0 e posterior, você pode fazer o checkout de uma nova ramificação:
Edite arquivos, adicione e confirme. Em seguida, pressione com a opção
-u
(abreviação de--set-upstream
) :O Git configurará as informações de rastreamento durante o envio.
fonte
push.default
está definido comoupstream
, isso não fará o que você pensa que fará. Ele tentará empurrar o ramo de rastreamento existente. Use:git push -u origin mynewfeature:mynewfeature
ou façagit branch --unset-upstream
primeiro.-u
opção toda vez que colocamos a ramificação em seu controle remoto ou precisamos dela apenas na primeira vez?-u
uma vez para iniciar o rastreamento. Depois é só usargit push
Se você não estiver compartilhando seu repositório com outras pessoas, isso é útil para enviar todas as suas ramificações para o controle remoto e
--set-upstream
rastrear corretamente para você:(Não é exatamente o que o OP estava pedindo, mas essa linha é bastante popular)
Se você está compartilhando seu repositório com outras pessoas, essa não é uma forma muito boa, pois você irá entupi-lo com todos os seus ramos experimentais desonestos.
fonte
git pull --all
puxa tudo de volta para outro lugar? kewlgit push --all -u
?Antes da introdução de
git push -u
, não haviagit push
opção para obter o que você deseja. Você precisava adicionar novas instruções de configuração.Se você criar uma nova ramificação usando:
Você pode usar o
git config
comando para evitar a edição direta do.git/config
arquivo.Ou você pode editar manualmente o
.git/config
arquivo para obter informações de rastreamento para esse ramo.fonte
git push origin -u local_branch:remote_branch
Simplificando, para criar uma nova filial local , faça:
Para enviá-lo ao repositório remoto , faça:
fonte
git branch <branch-name>
egit checkout -b <branch-name>
tanto criar um interruptor de ramo, mas check-out para o novo ramosrc branch-name does not match any
Uma pequena variação das soluções já fornecidas aqui:
Crie uma filial local com base em outra filial (remota ou local):
Envie a ramificação local para o repositório remoto (publicação), mas torne-a rastreável
git pull
egit push
funcionará imediatamenteO uso
HEAD
é uma "maneira útil de enviar a ramificação atual para o mesmo nome no controle remoto". Fonte: https://git-scm.com/docs/git-push Nos termos do Git, HEAD (em maiúsculas) é uma referência à parte superior do ramo atual (árvore).A
-u
opção é apenas uma abreviação de--set-upstream
. Isso adicionará uma referência de rastreamento upstream para a ramificação atual. você pode verificar isso procurando no seu arquivo .git / config:fonte
git push -u origin <branch-name>
não estava funcionando para mim, mas utilizandoHEAD
, em vez de<branch-name>
funcionou perfeitamente :)Eu simplesmente faço
sobre um projeto já clonado.
O Git cria um novo ramo chamado
remoteBranchToBeCreated
sob meus commits que fizlocalBranch
.Editar : isso altera o seu ramo local atual (possivelmente nomeado
localBranch
) a montante paraorigin/remoteBranchToBeCreated
. Para corrigir isso, basta digitar:Portanto, sua filial local atual agora é rastreada
origin/localBranch
.fonte
error: src refspec <new branch> does not match any.
quando eu tento isso.Suponho que você já tenha clonado um projeto como:
Em sua cópia local, crie uma nova ramificação e confira:
Supondo que você criou um "git bare --init" em seu servidor e criou o myapp.git, você deve:
Depois disso, os usuários devem poder
NOTA: Suponho que você tenha seu servidor instalado e funcionando. Se não for, não funcionará. Um bom tutorial está aqui .
ADICIONADO
Adicione uma filial remota:
Verifique se tudo está bom (busque a origem e liste as ramificações remotas):
Crie uma filial local e acompanhe a filial remota:
Atualize tudo:
fonte
git remote add origin
fazer a rastreável filial local? esse é o comando principal aqui?git remote add origin
apenas registre um novo repositório remoto. É apenas um passo necessário antes de empurrar a sua filial para o repositório remoto (se você não quiser digitar todo o endereço de cada vez)editar Desatualizado, basta usar
git push -u origin $BRANCHNAME
Use as diversas ferramentas Git
git publish-branch
de William ( repositório gitorioso e clone ).OK, não Ruby, então - ignorando as salvaguardas! - pegue as últimas três linhas do script e crie um script bash
git-publish-branch
:Em seguida
git-publish-branch REMOTENAME BRANCHNAME
, execute , onde REMOTENAME geralmente é origem (você pode modificar o script para ter origem como padrão, etc ...)fonte
git push
egit config
comando. Eu usei o código do script para editar minha resposta. Você pode usar essas informações para criar um pequeno script de shell que seja útil para você.Para criar uma nova ramificação ramificando-se de uma ramificação existente
e empurre esse novo ramo para repositório usando
Isso cria e envia todas as confirmações locais para uma ramificação remota recém-criada
origin/<new_branch>
fonte
Para a versão GitLab anterior à 1.7, use:
(name_branch, ex:
master
)Para enviá-lo ao repositório remoto, faça:
(name_new_branch, exemplo:
feature
)fonte
Criei um alias para que sempre que eu criar uma nova ramificação, ela enviará e rastreará a ramificação remota de acordo. Coloquei o seguinte pedaço no
.bash_profile
arquivo:Uso : basta digitar
gcb thuy/do-sth-kool
comthuy/do-sth-kool
é o meu novo nome de filial.fonte
Com base nas respostas aqui, envolvi esse processo como um script Bash simples, que também poderia ser usado como um alias do Git.
A adição importante para mim é que isso me pede para executar testes de unidade antes de confirmar e passa no nome da filial atual por padrão.
git_push_new_branch.sh
fonte
Você pode fazer isso em duas etapas:
1. Use o
checkout
para criar a ramificação local:Trabalhe com sua filial como quiser.
2. Use o
push
comando para criar automaticamente a ramificação e enviar o código ao repositório remoto:fonte
Para maior flexibilidade, você pode usar um comando Git personalizado . Por exemplo, crie o seguinte script Python em algum lugar no seu
$PATH
sob o nomegit-publish
e torne-o executável:Então
git publish -h
, mostrará as informações de uso:fonte