@sfletche se você quiser nomear seu stash, você precisa fazer o git stash save <name>, caso contrário, como você diz, é o mesmo que git stash.
SgtPooki
5
Depois de usar essa abordagem, parece que se você retornar à ramificação anterior, as alterações ocultas retornaram. É possível ter apenas as alterações ocultas no novo ramo?
Thomas Higginbotham
Apenas confirme suas alterações na nova ramificação.
ChrisR
2
@ThomasHigginbotham no, o Diretório de Trabalho é comum entre as ramificações e é copiado de uma para outra quando você passa de uma ramificação para outra. Para "alcançar" o que você deseja, costumo fazer stashes diferentes, adicionando uma descrição útil com o git stash save "description"comando mencionado anteriormente; e então eu git cleara ramificação (para descartar o diretório de trabalho real) e depois git stash apply stash@{my_desired_stash}na ramificação desejada (depois de mudar para isso com git checkout <branch>obviamente). Eu sei que não é uma solução real, mas é o melhor que você pode fazer com o git .
Kamafeather
Eu também finalizado isso com git stash dropuma vez que eu tinha cometido
oddmeter
221
Como você já ocultou suas alterações, tudo o que você precisa é este one-liner:
Cria e faz check-out de uma nova ramificação denominada < branchname > iniciando no commit no qual o < stash > foi criado originalmente, aplica as alterações registradas em < stash > à nova árvore e índice de trabalho. Se isso for bem-sucedido e < stash > for uma referência ao formulário stash @ {< revision >}, ele eliminará o < stash >. Quando não for fornecido < stash >, aplica-se o mais recente.
Isso é útil se o ramo no qual você executou o git stash save tiver sido alterado o suficiente para que a aplicação do git stash falhe devido a conflitos. Como o stash é aplicado na parte superior da confirmação que era HEAD no momento em que o git stash foi executado, ele restaura o estado stash original sem conflitos.
Para esconderijos simples, este é o caminho a percorrer. A referência de nome stash não é necessária, pois o Git aplicará o stash mais recente, alternará para nova ramificação e aplicará o comando stash in 1.
sinisterOrange
@RodneyGolpe Isso também parece aplicar o stash ao 'master'? O que eu quero fazer é, a partir de 'master', git stash, então eu esperaria que 'git stash branch [branchname] aplique o stash a um novo ramo, deixando o master sem as edições?
David Doria
2
@DavidDoria Você precisa confirmar as alterações em sua nova ramificação antes de voltar ao master.
Rodney Golpe 21/01
Agora que também comprometeu as mudanças para dominar também ... estou realmente perdida ... obviamente ainda não entendo o git. Após o mestre de redefinição suave e o puxar do repositório remoto, agora estou onde queria estar. O mestre está no estado antes das alterações. O novo ramo mantém as alterações.
Ekkstein
1
Se você tiver algumas alterações no seu espaço de trabalho e deseja armazená-las em uma nova ramificação, use este comando:
git stash branch branchName
Isso fará:
um novo ramo
mover alterações para este ramo
e remova o stash mais recente (como: git stash pop)
Respostas:
O procedimento padrão não está funcionando?
git stash save
git branch xxx HEAD
git checkout xxx
git stash pop
Mais curta:
git stash
git checkout -b xxx
git stash pop
fonte
git stash save "description"
comando mencionado anteriormente; e então eugit clear
a ramificação (para descartar o diretório de trabalho real) e depoisgit stash apply stash@{my_desired_stash}
na ramificação desejada (depois de mudar para isso comgit checkout <branch>
obviamente). Eu sei que não é uma solução real, mas é o melhor que você pode fazer com o git .git stash drop
uma vez que eu tinha cometidoComo você já ocultou suas alterações, tudo o que você precisa é este one-liner:
git stash branch <branchname> [<stash>]
Nos documentos ( https://www.kernel.org/pub/software/scm/git/docs/git-stash.html ):
fonte
Se você tiver algumas alterações no seu espaço de trabalho e deseja armazená-las em uma nova ramificação, use este comando:
Isso fará:
fonte