Existem várias maneiras diferentes, dependendo de quanto tempo você está e em quais filiais você deseja.
Vamos cometer um erro clássico:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
Então agora você deseja que essas mudanças, com as quais você ainda não se comprometeu master
, estejam ativadas develop
.
Se você não tem um develop
ainda, o método é trivial:
$ git checkout -b develop
Isso cria uma nova develop
ramificação a partir de onde você estiver agora. Agora você pode confirmar e o novo material está ativado develop
.
Você tem um develop
. Veja se o Git permitirá que você alterne sem fazer nada:
$ git checkout develop
Isso será bem-sucedido ou reclamará. Se conseguir, ótimo! Apenas cometa. Caso contrário ( error: Your local changes to the following files would be overwritten ...
), você ainda tem muitas opções.
O mais fácil é provavelmente git stash
(como postdisseram todas as outras pessoas que responderam ao clique ). Execute git stash save
or git stash push
, 1 ou simplesmente git stash
que é a abreviação de save
/ push
:
$ git stash
Isso confirma seu código (sim, ele realmente faz alguns commit) usando um método estranho que não é branch-y. As confirmações feitas não estão "em" nenhuma ramificação, mas agora estão armazenadas com segurança no repositório; portanto, você pode mudar de ramificação e depois "aplicar" o stash:
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
Se tudo correr bem, e você gostar dos resultados, deverá fazer git stash drop
a reserva. Isso exclui a referência às confirmações estranhas não ramificadas-y. (Eles ainda estão no repositório e, às vezes, podem ser recuperados em uma emergência, mas para a maioria dos propósitos, você deve considerá-los desaparecidos nesse ponto.)
A apply
etapa faz uma mesclagem das alterações ocultas, usando o poderoso mecanismo de mesclagem subjacente do Git, o mesmo tipo de coisa usado quando você faz mesclagens de ramificações. Isso significa que você pode obter "conflitos de mesclagem" se o ramo em que você estava trabalhando por engano for suficientemente diferente do ramo em que você pretendia trabalhar. Portanto, é uma boa ideia inspecionar os resultados com cuidado antes de assumir que o stash foi aplicado corretamente, mesmo que o próprio Git não tenha detectado nenhum conflito de mesclagem.
Muitas pessoas usam git stash pop
, o que é uma abreviação de git stash apply && git stash drop
. Tudo bem, mas significa que, se o aplicativo resultar em uma bagunça, e você decidir que não deseja seguir esse caminho, não poderá recuperar o estoque facilmente. É por isso que recomendo separar apply
e inspecionar resultados, drop
somente se / quando estiver satisfeito. (É claro que isso introduz outro ponto em que você pode fazer outra pausa para o café e esquecer o que estava fazendo, voltar e fazer a coisa errada , para que não seja uma cura perfeita.)
1 O save
in git stash save
é o verbo antigo para criar um novo esconderijo. A versão 2.13 do Git introduziu o novo verbo para tornar as coisas mais consistentes pop
e adicionar mais opções ao comando de criação. A versão 2.16 do Git obsoleta formalmente o verbo antigo (embora ainda funcione no Git 2.23, que é a versão mais recente no momento em que estou editando isso).
git stash
git-scm.com/book/en/Git-Tools-Stashing