Pergunta

Pode haver mais de uma maneira de fazer essa pergunta, então aqui está uma descrição do problema.Eu estava trabalhando no master e comprometi algumas coisas e então decidi que queria adiar esse trabalho.Fiz backup de alguns commits e depois ramifiquei antes de começar meu trabalho de merda.Praticamente isso funciona bem, só agora tenho um branch diferente como meu principal branch de desenvolvimento.Estou me perguntando como poderia mudar as coisas, então estou trabalhando no master novamente, mas ele não tem meu trabalho inútil e disse que o trabalho está em um ramo diferente.

Algumas maneiras pelas quais isso pode ser perguntado/resolvido:Como renomeio meu branch master para outra coisa e depois renomeio outra coisa para master?Como faço backup do master e, em seguida, faço com que todos os commits dos quais fiz backup estejam em um branch diferente?

Obrigado por todas as respostas (rápidas)!Eles são todos bons.

Foi útil?

Solução

Além dos outros comentários, você pode achar útil a opção -m (mover) para git-branch.Você poderia renomear seu antigo master para outra coisa e depois renomear seu novo branch para master:

git branch -m master crap_work
git branch -m previous_master master

Outras dicas

Acho que você deveria considerar uma estratégia de desenvolvimento diferente para evitar problemas como esse.Uma que parece funcionar melhor para mim é nunca desenvolver diretamente no meu branch master.Independentemente das alterações que estou fazendo, sempre crio um novo branch para o novo código:

git checkout -b topic/topic_name master

A partir daí, posso enviar as alterações para repositórios públicos:

git push pu topic/topic_name

ou eventualmente apenas mesclá-lo novamente com meu branch master:

git checkout master && git merge topic/topic_name

Se você realmente precisa voltar a um momento mais antigo e defini-lo como seu mestre, você pode renomear o branch atual para outro nome e então verificar uma versão mais antiga para ser seu mestre:

 git branch -m master junk
 git co -b master old_sha1_value

Começar master, crie um branch chamado in-progress, e, em seguida, redefinir master para um commit anterior.

$ git branch in-progress
$ git reset --hard HEAD^

Isso é relativamente fácil:

git checkout -b fake_master master # fake_master now points to the same commit as master
git branch -D master               # get rid of incorrect master
git checkout -b master real_master # master now points to your actual master
git checkout master                # optional -- switch on to your master branch

Isso definirá seu mestre para qualquer ponto em uma única etapa:

git checkout -B master new_point
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top