Respostas:
Isso quase funcionará.
Ao enviar para uma ramificação não padrão, você precisa especificar a referência de origem e a referência de destino:
git push origin branch1:branch2
Ou
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
pensando que apenas enviaria a ramificação local atual para o controle remoto branch2
, que, em vez disso, excluiria o controle remoto branch2
! A maneira correta é git push origin HEAD:branch2
.
Certamente, embora funcione apenas se for um avanço rápido do BRANCH2 ou se você forçá-lo. A sintaxe correta para fazer isso é
git push <remote> <source branch>:<dest branch>
Veja a descrição de um "refspec" na página do manual git push para obter mais detalhes sobre como ele funciona. Observe também que um push de força e uma redefinição são operações que "reescrevem o histórico" e não devem ser tentadas pelos fracos de coração, a menos que você tenha certeza absoluta de que sabe o que está fazendo em relação a quaisquer repositórios remotos e outros pessoas que possuem garfos / clones do mesmo projeto.
git push --force remote local-branch:remote-branch
.
É muito simples. Suponha que você tenha feito alterações em sua Filial A, que residem local e remotamente, mas você deseja enviar essas alterações para a Filial B, que não existe em nenhum lugar.
Etapa 01: criar e alternar para o novo ramo B
git checkout -b B
Etapa 02: adicionar alterações na nova ramificação local
git add. // ou arquivo (s) específico (s)
Etapa 03: confirmar as alterações
git commit -m "commit_message"
Passo-04: Empurre alterações para o novo ramo B . O comando abaixo criará uma nova ramificação B também remotamente
origem git push B
Agora, você pode verificar a partir bitbucket que o ramo B terá mais uma comprometer de ramo A . E quando você vai fazer o checkout do ramo Uma dessas mudanças não vai estar lá como estes têm sido empurrados para o ramo B .
Nota: Se você confirmou suas alterações na ramificação A e depois deseja mudar essas alterações para a nova ramificação B , será necessário redefinir essas alterações primeiro. #HappyLearning
No meu caso, eu tinha um commit local, que não foi enviado origin\master
, mas confirmado no meu master
ramo local . Essa confirmação local agora deve ser enviada para outra ramificação.
Com as extensões Git, você pode fazer algo assim:
Você também pode fazer isso na linha de comando do GIT . Exemplo copiado de David Christensen :
Eu acho que você encontrará
git cherry-pick
+git reset
um fluxo de trabalho muito mais rápido:Usando o mesmo cenário, com "feature" sendo a ramificação com a confirmação mais alta incorreta, seria muito mais fácil fazer isso:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
Economiza bastante trabalho e é o cenário que
git cherry-pick
foi projetado para lidar.Também observarei que isso funcionará bem se não for o commit mais alto; você só precisa de um commit para o argumento escolher, via:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
Eu tive um resultado ruim com git push origin branch1:branch2
comando:
No meu caso, branch2
é excluído ebranch1
foi atualizado com algumas novas alterações.
Portanto, se você quiser apenas as alterações pressionadas a branch2
partir de branch1
, tente os procedimentos abaixo:
branch1
:git add .
branch1
:git commit -m 'comments'
Ativado branch1
:git push origin branch1
Ativado branch2
:git pull origin branch1
Ativado branch1
: reverta para a confirmação anterior.
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)
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
Você se comprometeu com o BRANCH1 e deseja se livrar desse commit sem perder as alterações? git reset é o que você precisa. Faz:
git branch BRANCH2
se você quiser que o BRANCH2 seja um novo ramo. Você também pode mesclar isso no final com outro ramo, se desejar. Se a FILIAL2 já existir, deixe esta etapa fora.
Então faça:
git reset --hard HEAD~3
se você deseja redefinir a confirmação na ramificação que você confirmou. Isso leva as alterações dos três últimos commits.
Em seguida, faça o seguinte para trazer as confirmações redefinidas para BRANCH2
git checkout BRANCH2
Esta fonte foi útil: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
branch1
ebranch2
precisa estar no controle remoto? E se você quiser enviar do localbranch1
para o remotoorigin branch2
?