Mudar o trabalho existente, sem compromisso, para uma nova filial em Git

Comecei a trabalhar em uma nova funcionalidade e depois de codificar um pouco, decidi que esta funcionalidade deveria estar em seu próprio ramo.

Como posso mover as alterações não comprometidas existentes para uma nova filial e reiniciar a minha actual?

Quero reiniciar minha filial atual, preservando o trabalho existente no novo recurso.

Solução

Use o seguinte:

git checkout -b 

Isto deixará o seu ramo actual como está, crie e faça o checkout de um novo ramo e mantenha todas as suas alterações. Você pode então fazer um commit com:

git add 

e comprometer-se com a sua nova filial:

git commit -m ""

As alterações no directório de trabalho e as alterações encenadas no índice ainda não pertencem a nenhum ramo. Isto muda onde essas mudanças terminariam.

Você não redeia o seu ramo original, ele fica como está. O último compromisso no `

Comentários (22)

Em alternativa:

  1. Guarde as alterações actuais para um armazenamento temporário:

    "$$ git stash

  2. Crie um novo ramo com base neste esconderijo, e mude para o novo ramo:

    `$ ramo de git-stash stash@{0}``

Dica: use a tecla Tab para reduzir a digitação do nome do esconderijo.

Comentários (18)

Se o cometeres, também podes escolher a identificação do único compromisso. Eu faço isto frequentemente quando começo a trabalhar em master, e depois quero criar uma filial local antes de ir para a minha origem/.

git cherry-pick 

Há muita coisa que você pode fazer com cereja, como descrito aqui, mas isso pode ser um caso de uso para você.

Comentários (2)