Chegando Git-conceito de "palco"
Pergunta
Ainda está tendo um tempo duro ficar a minha cabeça enrolada em torno do conceito de encenação como ele se aplica ao Git.
Pode quaisquer analogias ser feita com o SVN?Qual é a principal finalidade de ter um estágio de nível no Git?
Solução
semelhanças:
Arquivos que devem fazer parte do repositório devem ser adicionados para serem rastreados. Ambas as ferramentas usam o comando add
para realizar isso. Adicionando arquivos significa preparar um commit.
Diferenças:
git permite mais um tipo de detalhe ao adicionar arquivos. Você pode decidir adicionar um arquivo inteiro ou linhas distintas de código. Adicionando arquivos ao índice ou permite mais flexibilidade. O SVN confirma automaticamente todas as alterações em um arquivo que já foi adicionado ao repositório. O Git deixa a decisão do que muda para associar a cada operação de confirmação ao usuário. Em outras palavras: o próximo confirmação no Git contém apenas essas alterações (linhas ou arquivos) que foram encenadas, independentemente do status de rastreamento dos arquivos. O SVN inclui automaticamente todas as alterações nos arquivos rastreados.
Informações adicionais:
Tente ler alguns posts descrevendo fluxos de trabalho do Git, como o de Oliver Steele . Mas esteja ciente de que há não um maneira de usar o Git - há muitos. Se você quiser, você pode usar o Git como se estivesse trabalhando com SVN.
Não espere entender a filosofia do Git em um curto período de tempo. Demorei um ano para entrar nisso e ainda aprendo novas maneiras de usá-lo. Eu acho que é ainda mais difícil se você cresceu com a mentalidade do svn. Há toneladas de materiais lá fora: artigos, vídeos, ... - Tome o seu tempo e tente alguns deles. Aqui está uma seleção da lista que colecionei.
Outras dicas
A principal vantagem da área de transição é que você pode facilmente cometer apenas uma parte das alterações em um determinado arquivo.(Usando git add -p
por exemplo.) Até onde eu sei, a única maneira de fazer um "parcial" commit no SVN é, por nível de arquivo, ou editando manualmente o backup de um arquivo e, em seguida, temporariamente reverter as mudanças que você não quer cometer.
Isso é ótimo se (como eu) você não é um ser altamente organizada desenvolvedor e deseja ser capaz de classificar as alterações em "puro" compromete-se após o fato.Isto segue do Git, a atitude geral de preferindo dar-lhe a flexibilidade através de cumprimento de exigência.Se você não precisa dele, você sempre pode simplesmente não usar, e usar git commit -a ...
.
Não existem analogias para ser feito com o SVN, porque SVN não é o Git e não tiver como um conceito.
Aqui estão alguns dos cenários que mostram a utilidade do encenamento:
-
Você trabalha em uma peça específica e fez algumas mudanças em seu projeto. Você não quer cometê-los ainda antes de testar a coisa completa. Mas essas mudanças podem ser independentes o suficiente para fazer várias comissões lógicas do que um único grande. É quando você está fase de peças seletivas e faz várias commits.
-
O estágio tem sido especialmente útil durante a depuração. Você pode polvilhar as instruções de log para rastrear a fonte do bug. Então você faz a correção e teste novamente usando essas instruções de log. Mas então, você deseja confirmar a correção antes de fazer qualquer alteração no código para excluir essas instruções de log.
-
Outro cenário onde provou ser útil é quando você está no meio de fazer alguma coisa, e encontrar algo não relacionado, como um erro de digitação, que você deseja consertar e tirá-lo do caminho rapidamente.
Há vários outros cenários, e provavelmente você não seria capaz de trabalhar com qualquer coisa que não tenha esse conceito, uma vez que você recebe um jeito :).
PS: Eu não usei o SVN, então não posso fazer as comparações entre os dois.