Às vezes, o checkout falha porque suas alterações entram em conflito com esse ramo. Você pode tentar fazer o checkout -m para mesclar.
Jouni K. Seppänen
2
Eu tentei isso, mas recebi um erro: erro: suas alterações locais nos seguintes arquivos seriam substituídas pelo checkout. Confirme suas alterações ou as esconda antes de poder trocar de ramificação.
Ishwr
Embora isso funcione, a resposta que diz usar esconderijo deve ser a preferida, IMO. Talvez apenas escolha pessoal, mas é um fluxo de trabalho mais limpo, logicamente e apresenta o STASH, que é um comando útil.
Patrick
A opção "-b" está ausente, pois o título sugere que a pergunta se refere a um "novo" ramo.
Guntram
195
Além disso, você pode criar uma nova ramificação e mudar para ela fazendo:
git checkout -b new_branch
git add .
Eu uso isso o tempo todo, porque sempre esqueço de iniciar um novo ramo antes de começar a editar o código.
mesmo problema que o @jouni anotou para a outra resposta - você pode ter dificuldade em mesclar a ramificação novamente no mestre se alterações adicionais entrarem em conflito com as alterações originais. IMO esta discussão responde à pergunta melhor: stackoverflow.com/questions/556923/...
jpw
Curto, doce e reconfortante ... "Eu uso isso o tempo todo ..."
ϹοδεMεδιϲ
1
Não se esqueça de confirmar no new_branch. Se você voltar ao ramo principal e reverter os arquivos alterados, também os perderá no new_branch.
petrsyn
36
Por que não usar apenas git stash. Eu acho que é mais intuitivo como copiar e colar.
$ git branch
develop
* master
feature1
TEST
$
Você tem alguns arquivos em sua ramificação atual que deseja mover.
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: awesome.py
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: linez.py
#
$
$ git stash
Saved working directory and index state \
"WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$
Mover para o outro ramo.
$ git checkout TEST
E aplicar
$ git stash apply
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: awesome.py
# modified: linez.py
#
Também gosto git stashporque uso git flow, que reclama quando você deseja concluir uma ramificação de recursos enquanto ainda tem alterações no seu diretório de trabalho.
Assim como o @Mike Bethany, isso acontece comigo o tempo todo, porque trabalho em um novo problema, esquecendo que ainda estou em outro ramo. Assim, você pode esconder seu trabalho git flow feature finish..., e git stash applypara um novo git flow feature start ...ramo.
git stashé a minha maneira preferida de lidar com alterações não confirmadas. É certamente um método intuitivo quando você pensa nele como recortar e colar.
Matthew Mitchell
Essa parece uma boa abordagem para mim. Funcionou sem problemas.
Yunus Nedim Mehel 01/05/19
Não sabia que você poderia fazer isso e funcionou bem. Parece um pouco mais intuitivo do que os outros métodos.
Glauco
Acho que esconder é a maneira mais profissional, em vez de usar o git checkout e depois adicioná-lo. Eu acho que sua resposta deve ter mais de 100 votos.
Respostas:
Você pode fazer o checkout no ramo de teste e confirmar. Você não perde suas alterações não confirmadas ao mudar para outro ramo.
Supondo que você esteja no ramo principal:
Não tenho muita certeza dos arquivos excluídos, mas acho que eles não estão incluídos quando você usa
git add .
fonte
Além disso, você pode criar uma nova ramificação e mudar para ela fazendo:
Eu uso isso o tempo todo, porque sempre esqueço de iniciar um novo ramo antes de começar a editar o código.
fonte
Por que não usar apenas git stash. Eu acho que é mais intuitivo como copiar e colar.
Você tem alguns arquivos em sua ramificação atual que deseja mover.
Mover para o outro ramo.
E aplicar
Também gosto
git stash
porque usogit flow
, que reclama quando você deseja concluir uma ramificação de recursos enquanto ainda tem alterações no seu diretório de trabalho.Assim como o @Mike Bethany, isso acontece comigo o tempo todo, porque trabalho em um novo problema, esquecendo que ainda estou em outro ramo. Assim, você pode esconder seu trabalho
git flow feature finish...
, egit stash apply
para um novogit flow feature start ...
ramo.fonte
git stash
é a minha maneira preferida de lidar com alterações não confirmadas. É certamente um método intuitivo quando você pensa nele como recortar e colar.git stash --include-untracked
fonte