Costumo trabalhar em alguns recursos do meu projeto que preciso fazer uma pausa antes que seja bom o suficiente para uma confirmação. No entanto, uso diariamente dois computadores diferentes para codificar (meu laptop e minha área de trabalho do laboratório de pesquisa). Por exemplo: estou trabalhando em um recurso em casa, então paro e vou para o meu laboratório.
Não quero misturar a sincronização em nuvem (por exemplo, Dropbox) com o rastreamento remoto do GitHub.
Simplesmente cometi estados inacabados (e confusos) do meu código antes (e o empurrei) apenas com o objetivo de extrair isso no outro computador para continuar o trabalho. Tenho certeza de que é uma prática ruim.
Hoje, porém, me deparei com o Google git stash
um pouco. Parece ser a solução perfeita para o que eu preciso.
No entanto, a documentação não diz se vai para o github depois que eu envio minhas alterações. Além disso, quero saber se existe uma maneira mais eficiente de realizar a mobilidade de que preciso.
Desde já, obrigado!
Respostas:
Não há problema em cometer um trabalho inacabado confuso. Faça seu trabalho em uma ramificação de tópico. Comprometa cedo e comprometa-se frequentemente. Leia sobre quando confirmar o código? para obter algumas diretrizes sobre quando fazer um commit. Especificamente para o Git, comprometa-se com um ramo de tópico e envie-o quantas vezes quiser.
Se este ramo de tópico for apenas para você, confirme e envie códigos quebrados. Você só deve adiar a partir empurrando código quebrado a um ramo que é usado por outras pessoas. Sinta-se livre para quebrar seu próprio código.
fonte
Os stashes destinam-se ao uso local, como um local temporário para colocar as coisas enquanto você mexe nos galhos.
Se você é o único que trabalha em uma ramificação, não há problema em confirmar código quebrado. O que faço quando em situações semelhantes é fazer um commit quebrado, depois de puxá-lo para outro local, faça um
git reset HEAD~1
para desfazê-lo. Obviamente, isso requer o uso--force
nopulls
epushes
quando você muda de local.Ou apenas espero até meu primeiro commit e faço a
git commit --amend
. Ou simplesmente comprima todas as confirmações quebradas quando confirmo o ramo do recurso. Ou simplesmente não me preocupo com alguns comprometimentos claramente marcados na minha história, porque tendem a não sair até que esteja em um bom ponto de parada. Há muitas opções.fonte
--amend
por isso exige--force
os empurrões, no entanto. Melhor se comprometer apenas com um ramo descartável.stash
não é realmente satisfatório para nada, além de limpar seu diretório de trabalho para "descompactar seu ramo"; se você nãostash pop
voltar imediatamente ao estado, as coisas ficarão muito confusas.Se houver trabalho real a ser salvo, mesmo que não seja bom para uma entrada permanente de repo, ainda deve ser uma confirmação. Na verdade, nunca deixo meu diretório de trabalho em um estado que não esteja sob controle de versão - uso alguns scripts Python muito simples para salvar todas as alterações como uma confirmação temporária. Se você quiser experimentar, aqui está o que fazer:
git-tmp-commit
. Ele confirmará automaticamente todas as alterações em uma ramificação nova e exclusiva.ccd
script, que efetivamente verifica tudo, desde o zero até uma pasta temporária , escolhendo automaticamente o ramo mais recente ... mas você também pode buscar e fazer checkout manualmente do ramo atemporary-commits/original-branch/YYYY-MM-DD...
partir de um clone existente do repositório.git-tmp-commit -r
. Isso o levará de volta à ramificação original † (por exemplomaster
) e deixará as alterações da confirmação temporária no diretório de trabalho, para que você possa continuar aqui até a hora de uma confirmação adequada (ou temporária, se precisar sair novamente).† Da maneira como o script está escrito agora, isso só funciona se não houver ramificação
master
no depósito de checkout . Então, na dúvida, você precisariagit branch -d master
; isso obviamente não é realmente ideal ...fonte