Mudar para outro ramo sem alterar os ficheiros da área de trabalho
origin/master
, então ele está limpo, e eu quero enviar minhas alterações lá como um commit com um comentário de commit agradável.
Quando estou no comando local, quero mudar para o meu {[[0]} mas sem mudar os ficheiros. E depois posso comprometer-me.
Como posso mudar de ramo sem ... a mudar de ficheiros?
quero deixar claro: tenho todas as mudanças comprometidas no local master
. Não há alterações por persistir.
6 answers
Edit: acabei de reparar que disseste que já tinhas criado alguns commits. Nesse caso, use git merge --squash
para fazer um único commit:
git checkout cleanchanges
git merge --squash master
git commit -m "nice commit comment for all my changes"
(Editar: a seguinte resposta aplica-se se tiver alterações por persistir.)
Basta trocar os ramos comgit checkout cleanchanges
. Se os ramos se referirem ao mesmo ref, então todas as suas alterações por persistir serão preservadas em seu diretório de trabalho quando você mudar.
A única altura em que terias um conflito é se algum arquivo no repositório é diferente entre origin/master
e cleanchanges
. Se acabaste de criar o ramo, então não há problema.
Pira-te. Mudar para outro ramo
git checkout branch_name
A melhor aposta éstash as alterações e mudar de ramo. Para mudar de ramo, é preciso um estado limpo. Por isso, esconda-os, verifique um novo ramo e aplique as alterações no novo ramo e envie-o para
Se assim for, você quer ajustar os seus commits, esmagando-os num único commit.
Não sei exactamente o que queres, por isso não te vou tentar com um guião. Mas eu sugiro que você leia sobre {[[0]} e as opções para"esmagar", e experimentar algumas coisas.De outra forma, se quiser criar uma nova persistência em vez de realizar uma junção:
git checkout cleanchanges
git reset --hard master
git reset cleanchanges
git status
git add .
git commit
O primeiro reset (duro)irá configurar a sua árvore de trabalho como a última persistência em master
.
O segundo reset irá colocar a sua cabeça de volta onde estava, apontando para a ponta do ramo cleanchanges
, mas sem alterar quaisquer ficheiros. Então agora você pode adicioná-los e comprometê-los.
Depois, se quiser remover os commits Sujos que fez de {[[2]} (e assumindo que não o fez já os empurrei), você poderia: [[8]}
git checkout master
git reset --hard origin/master
Isto irá descartar todos os seus novos commits, devolvendo o seu branch local master
para o mesmo commit que o do repositório.
A maneira mais simples de fazer é a seguinte:
git fetch && get checkout <branch_name>