it-swarm-pt.tech

O Git permite a alteração de ramificação com alterações sem etapas

O Git está me permitindo alterar ramificações quando tenho alterações não preparadas para confirmação (arquivos modificados).

Existe uma configuração para isso em algum lugar?

Edit: No começo, eu pensei que era uma configuração que eu precisava definir para impedir a alteração entre ramificações, se houver arquivos não estágios modificados. Mas pelo comentário de Emily, parece que você será solicitado se os arquivos diferirem entre as filiais e não for solicitado de outra forma.

59
Dave

Como decide

Uma experiência rápida mostra o seguinte.

Suponha que você esteja no ramo dev e tenha modificado foo.txt. Sem confirmar, você tenta verificar master. Uma de duas coisas acontecerá.

  1. E se foo.txt foi modificado em master em um commit que dev não possui, você não poderá mudar sem confirmar, porque master possui uma versão "nova" do arquivo que entra em conflito com as alterações não faseadas.

    Para "fazer check-out" master, portanto, seria necessário que o Git atualizasse foo.txt para a versão mais recente que master possui, destruindo as alterações não estáveis. Para evitar que seu trabalho seja perdido, ele não mudará de ramo.

  2. Caso contrário, a modificação foi feita "desde" a versão master conhece e você poderá alterar ramificações. O Git não precisa atualizar o arquivo porque master não possui novas informações sobre o arquivo.

Para as alterações "gritos"

Por causa do exposto acima, se você tiver alterações nos estágios nos arquivos em uma ramificação e perceber que realmente deseja confirmar as alterações em outra, poderá ou não conseguir verificar a outra ramificação.

Você pode, no entanto, fazer o seguinte:

  • git stash save "here's a summary of my changes" (o resumo será exibido em git stash list)
  • git checkout otherbranch
  • git stash pop (que é uma combinação de git stash apply e git stash drop)
131
Nathan Long

Como Emily apontou, esse é um recurso. O Git não permitirá a alteração de ramificação apenas se a execução exigir modificação de qualquer um dos arquivos que possuem alterações não-estágios. Se todos os arquivos modificados não forem tocados pelo checkout de ramificação, o git não reclamará. Isso significa que, independentemente de qual ramo você faz check-out, sempre pode verificar o ramo anterior e sua árvore de trabalho será idêntica à maneira como você o deixou.

11
Lily Ballard