Pergunta

Por várias razões (revisão de código principalmente) Eu preciso mudar de ramo de desenvolvimento atual para outros ramos com bastante frequência.

Atualmente, eu usar 'git stash de' engavetar as alterações não confirmadas, check-out outro ramo, em seguida, voltar e fazer 'git stash de aplicar'

No entanto, às vezes eu tenho alguns arquivos adicionados recentemente lá, que não são controladas. Infelizmente, stashing não afetá-los. Neste caso, eu teria que adicioná-los ao índice e esconderijo.

O que eu estou olhando aqui para um fluxo de trabalho, onde eu teria que realizar um conjunto mínimo de ações para mudar os ramos, de preferência evitando a adição de arquivos para o índice.

Foi útil?

Solução

Você pode clonar o repo para outro diretório e padrão para o ramo que deseja:

# assume your original repo is in myproj
$ git clone myproj myproj_clone --branch my_branch

Se você, em seguida, vá para a pasta myproj_clone, vai ser no seu ramo

$ cd myproj_clone
$ git branch
* my_branch

Outras dicas

Você pode clonar o repositório e revisão / trabalho no clone. Excluir o clone quando você está feito. Se você fizer acontecer para fazer alterações no ramo / clone, você pode empurrá-los para trás. Eu acho que um clone local é barato. E mesmo se não fosse, espaço em disco ainda é mais barato do que o seu tempo.

Eu não tenho certeza de que a clonagem é a solução certa, mas desde 2 respostas estão propondo que é sobre o cérebro, por isso estou oferecendo uma modificação sobre esse tema. clonagem pode não ser barato. Em termos de de espaço em disco, é irrelevante, mas o próprio clone fazer demorar alguns segundos e isso é muito tempo para perder com uma operação desnecessária. Como alternativa, você pode simplesmente criar uma nova pasta de trabalho usando o velho dir git trabalho. ou seja, se o dir de trabalho atual é "a" (com as mudanças e arquivos un-encenado), tente:

$ mkdir ../b
$ cd ../b
$ echo 'gitdir: ../a/.git' > .git
$ git checkout -f foo

Agora b é efetivamente um clone de um, em foo ramo, e você tem dois diretórios de trabalho para brincar. Faça o que você precisa em foo filial no trabalho dir b, em seguida, voltar a uma e fazer o checkout do ramo em que estava quando saiu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top