Empurra o compromisso para outro ramo

É possível comprometer-se e empurrar mudanças de um ramo para outro.

Suponha que eu cometi mudanças em BRANCH1 e quero empurrá-las para BRANCH2.

De BRANCH1, é válido para fazer:

git push origin **BRANCH2**

E depois reiniciar BRANCH1?

Solução

Isso quase vai funcionar.

Ao empurrar para um ramo não predefinido, você precisa especificar a referência de origem e a referência de destino:

git push origin branch1:branch2

Ou

git push  : 
Comentários (13)

Certamente, embora só funcione se ele'é um avanço rápido do BRANCH2 ou se você o forçar. A sintaxe correta para fazer uma coisa dessas é

git push  : 

Veja a descrição de um "refspec" na página [git push man][1] para mais detalhes sobre o seu funcionamento. Note também que tanto um force push quanto um reset são operações que "reescreve o histórico", e não deve'ser tentado por um fraco de coração a menos que você'tenha certeza absoluta de que sabe o que você'está fazendo com relação a qualquer repositório remoto e outras pessoas que têm garfos/clones do mesmo projeto.

[1]: http://www.kernel.org/pub/software/scm/git/docs/git-push.html

Comentários (1)

It'é muito simples. Suponha que você tenha feito alterações na sua Filial A que reside tanto no local como remotamente, mas você quer empurrar essas alterações para a Filial B que não't existe em qualquer lugar.

Passo-01: Criar e mudar para a nova Filial B***

caixa de saída -b B

Passo-02: Adicionar mudanças na nova filial local

git add . //ou arquivo(s) específico(s)

Passo-03: Comprometa as mudanças

git commit -m "commit_message"

Step-04: Push changes to the new branch B. O comando abaixo irá criar um novo ramo B assim como remotamente

git push origem B

Agora, você pode verificar pelo bitbucket que o ramo B terá mais um compromisso do que o ramo A. E quando você vai verificar o ramo A estas mudanças ganharam'não estar lá pois estas foram empurradas para o ramo B.

Note: Se você cometeu suas mudanças no ramo A e depois disso você quer mudar essas mudanças para o novo ramo B então você terá que resetar essas mudanças primeiro.

A** Aprendizagem Feliz

Comentários (0)

No meu caso eu tinha um compromisso local, que era'não empurrado para o originmaster, mas comprometido com a minha filial localmaster`. Este commit local deveria agora ser empurrado para outra filial.

Com **Git Extensions*** você pode fazer algo como isto:

  • (Criar se não existir e) checkout da nova filial, onde você quer empurrar seu commit.
  • Selecciona a submissão do histórico, que deve ser comprometida & empurrado para esta ramificação. Clique com o botão direito e selecione Cherry pick commit*.
  • Pressione o botão Cherry pick depois.
  • A submissão seleccionada get's aplicada ao teu ramo check out. Agora submeta e aperte-o.
  • Confira o seu ramo antigo, com o commit defeituoso.
  • Hard reset this branch to the second last commit, where everything was ok (esteja ciente do que você está fazendo aqui!). Você pode fazer isso através de um clique com o botão direito no segundo último commit e selecionar Resetar ramo atual para aqui. Confirme a operação, se você souber o que está fazendo.

Você também pode fazer isso na **GIT linha de comando**. Exemplo copiado de [David Christensen*](https://www.endpoint.com/blog/2012/06/21/moving-commit-to-another-branch-in-git):

Acho que você'vai achar o git cherry-pick + git reset um grande

fluxo de trabalho mais rápido:

Usando o mesmo cenário, com " feature" sendo o ramo com o

a maior parte dos cometidos estão incorrectos, é'seria muito mais fácil de fazer isto:

git checkout master

"característica de escolha de cereja".

"função de checkout".

git reset --cabeça dura^

Economiza um pouco de trabalho, e é o cenário que git cherry-pick

foi desenhado para lidar.

I'também notará que isto também funcionará se'não for o mais alto

comprometer-se; só precisas de um comunista para o argumento de escolher a cereja, via:

"git checkout master".

`git cherry-pick $sha1''.

"função de checkout".

"git rebase -i ...

whack the specific commit from the history`

Comentários (0)

Eu recebo um resultado ruim com o comando git push origin branch1:branch2:

No meu caso, branch2 foi apagado e branch1 foi atualizado com as novas alterações.

Assim, se você quer que as alterações só empurrem o branch2 do branch1, tente estes procedimentos:

  • No branch1: clique em .branch1: add .``.

  • No branch1: git commit -m 'comments'

  • Em branch1:

  • No 'branch2': "git pull origin branch1

  • No 'branch1': voltar ao compromisso anterior.

Comentários (0)

você pode fazer isso facilmente

git status
git add .
git commit -m "any commit"
git pull origin (branch name, master in my case)
git push origin current branch(master):branch 2(development)(in which you want to push changes)
Comentários (0)

Você se comprometeu com a BRANCH1 e quer se livrar desse compromisso sem perder as mudanças? **git reset*** é o que você precisa. Faça:

git branch BRANCH2

se você quer que o BRANCH2 seja uma nova filial. Você também pode fundir isto no final com outra filial, se quiser. Se o BRANCH2 já existe, então deixe esta etapa de fora.

Então deixe:

git reset --hard HEAD~3

se você quiser redefinir o compromisso no ramo que você se comprometeu. Isto leva as mudanças dos últimos três commits.

Então faz o seguinte para trazer os commits redefinidos para o BRANCH2

git checkout BRANCH2

Esta fonte foi útil: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch

Comentários (0)