Esta pergunta é semelhante a esta , mas mais específica.
Eu tenho um projeto com dois ramos ( staging
e beta
).
Eu desenvolvo staging
e uso o master
ramo para corrigir erros. Portanto, se estou trabalhando no preparo e vejo um erro, mudo para master
branch:
git checkout master
e faça as coisas:
git add fileToAdd
git commit -m "bug fixed"
e depois mesclo com os dois ramos:
git checkout staging
git merge master
git checkout beta
git merge beta
E não importa se há outros arquivos na árvore de trabalho.
Mas agora, quando tento mudar para o master
ramo, estou recebendo um erro :
error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting
Eu pensei que eu deveria remover o arquivo da área de teste:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
mas estou recebendo o mesmo erro. Se git status
eu receberNo changes to commit
git
git-checkout
Manolo
fonte
fonte
reset --hard
? Se você realmente tem certeza de que deseja descartar suas alterações. Ou use esconderijo se não o fizer.git add your-file
comprometer.staging
momento.Respostas:
Seu erro aparece quando você modifica um arquivo e a ramificação para a qual você está alternando também possui alterações para esse arquivo (do último ponto de mesclagem).
Suas opções, como eu vejo, são - commit e, em seguida, altere esse commit com alterações extras (você pode modificar os commit no git, desde que não sejam
push
editados); ou - use esconderijo:git stash save
criará stash que contém suas alterações, mas não está associado a nenhuma confirmação ou mesmo ramificação.git stash pop
aplicará a entrada mais recente do stash à sua ramificação atual, restaurando as alterações salvas e removendo-a do stash.fonte
add
quando é realmentesave
atualizado. Você quer dizer, para outros arquivos?git stash save
sem o nome do arquivo, o parâmetro salvará todos os arquivos modificados, se você desejar (e revertê-los para o estado confirmado mais recente). E ter uma cópia extra da árvore de diretórios nunca é demais, mas estou sempre paranóico com isso.master
ramificação. Além disso, uma opção seriapop
as alterações em outro ramo?master
, mas, ao fazer isso, perderá o conteúdo atual e, como esse conteúdo não é confirmado, seria impossível retornar a esse estado posteriormente, daí um erro para que você não ficaria chateado com alterações perdidas mais tarde.Encontrei o mesmo problema e resolvi-o
e sua especificação é bastante clara.
fonte
Você pode forçar o checkout de sua filial, se não desejar confirmar suas alterações locais.
fonte
sudo
não é necessário, ele apenas quebrará as permissões do arquivo. É o mesmo comando git postado por @kiki_yu um ano antes, mas é ainda pior.Bem, tenha cuidado com o
-f
interruptor. Você perderá quaisquer alterações não confirmadas se usar o-f
comutador. Embora possa haver alguns casos de uso em que é útil-f
, na maioria dos casos, convém fazerstash
as alterações e depoisswitch
ramificar. Ostashing
procedimento é explicado acima.fonte
Você pode confirmar na ramificação atual, finalizar a compra para outra ramificação e, finalmente, escolher essa confirmação (em vez de mesclar).
fonte
Se você conseguir isso ao tentar verificar um ramo diferente:
Isso significa que você tem algumas alterações que precisa confirmar na ramificação que fez check-out - ou precisa limpá-las ou escondê-las como a maioria dos pontos acima. 19 em 20 vezes, tenho mais chances de confirmar minhas alterações.
Agora que você fez isso, pode verificar o outro ramo e alternar facilmente.
Apenas verifique se você está no ramo direito e pressionando para o ramo direito ao executar o comando git push origin $ {branch}. Nota: se você tiver seu projeto conectado diretamente ao Intellij, poderá ver que alterou sua ramificação no canto inferior direito da janela principal.
fonte