O que é git?

Uma introdução sem comandos

Esta introdução pretende dar a você um entendimento básico do que é git. Ele também ensina um pouco da linguagem do git.

Controle de versão

comprometer

Git é um sistema de controle de versão, que pode ser usado para criar instantâneos de seu projeto de software. Um instantâneo é chamado de confirmação . Com o git, você pode olhar para trás no histórico de seu projeto navegando pelos commits e possivelmente reverter uma alteração defeituosa.

Um commit não deve ser considerado uma cópia completa do projeto, mas uma coleção de diferenças entre esta versão e a anterior.

repositório

O projeto, incluindo todos os arquivos criados e usados ​​pelo git, é chamado de repositório .

Cópias

Ramo

Digamos que você tenha uma versão funcional de seu projeto. Vamos chamá-la de versão 1.0. Agora você começa a trabalhar para adicionar um novo recurso. Durante o desenvolvimento, partes do aplicativo não funcionarão corretamente. Quando um bug crítico surge na v1.0, você não pode consertá-lo em sua versão de desenvolvimento atual e esperar até que possa ser lançado. Você deve manter uma cópia da v1.0 para consertar o bug imediatamente.

Em vez de criar cópias físicas do projeto, git permite que você crie uma cópia virtual chamada branch . Você muda de um branch para outro fazendo um checkout .

ramo git

Tag

Além das filiais, você também pode fazer uma cópia, que fica congelada no tempo. Isso é chamado de tag . Geralmente, as tags são versões lançadas do seu aplicativo. Digamos que eu lancei a versão 1.0.0. Agora surge um bug que é resolvido e liberado. Esta versão lançada está marcada com ‘v1.0.1’. Como você pode ver, o código da tag ‘v1.0.0’ nunca mudará.

Ramo mestre

É comum ter um branch master , que é um branch de desenvolvimento com apenas código funcional (e testado), mais branches para cada recurso que está atualmente em desenvolvimento.

Mesclando alterações

Agora você tem várias cópias do seu projeto. Em algum ponto, você precisa combinar o trabalho realizado em um ramo com o trabalho realizado em outro. Existem 2 maneiras de fazer isso.

Unir

Vamos supor que um recurso esteja concluído e eu queira adicioná-lo ao branch master. Você pode aplicar todas as alterações feitas na ramificação do recurso à ramificação mestre. Isso é chamado de mesclagem .

git merge

Rebase

Em outro exemplo, o recurso ainda não está pronto, mas você deseja atualizar o branch do recurso com as correções de bug feitas no branch master. Em vez de fazer uma mesclagem, você pode começar com uma cópia limpa e aplicar cada confirmação do branch de recurso à nova cópia. Isso é chamado de rebase .

git rebase

Observe que quando usar mesclar ou rebase está sob forte debate.

Conflito

Em alguns casos, você pode ter editado o mesmo arquivo em ambas as ramificações. Em uma mesclagem ou rebase, o git tentará mesclar as alterações automaticamente. Se você editou a mesma linha de código, a mesclagem automática não pode ser feita e o git com notifica que há um conflito . Você precisa resolver o conflito manualmente para continuar.

Cenário

Colaboração

É comum ter uma cópia do repositório em um servidor hospedado. Você pode hospedar o repositório sozinho, mas recomendo usar um serviço como o GitHub ou BitBucket .

As cópias hospedadas são chamadas de repositórios remotos . Um repositório remoto possui todos os recursos que você possui localmente, incluindo branches e tags.

origem

Mesmo que o projeto provavelmente tenha se originado em seu computador, o repositório remoto central é comumente chamado de origem .

O repositório de origem serve como ponto central ao trabalhar com outros desenvolvedores no mesmo projeto.

empurrar

As confirmações não são enviadas automaticamente para repositórios remotos. Você precisa enviar manualmente suas alterações. Você e outros desenvolvedores podem ir para a origem.

Você geralmente envia para a mesma filial em um servidor remoto. Portanto, você enviará os commits feitos em seu branch master para o branch master de origem.

buscar

Os commits feitos por outros desenvolvedores não aparecem apenas em seu repositório, mesmo que tenham sido enviados para a origem. Você precisará buscar alterações em repositórios remotos.

A busca criará branches somente leitura em seu sistema local. A cópia local da ramificação mestre de origem é denominada ‘origin \ master’ em seu sistema. Não deve ser confundido com seu branch ‘mestre’.

Depois de fazer uma busca, você pode mesclar ou rebase sua cópia do branch remoto com qualquer um de seus branches.

puxar

Um pull é simplesmente uma busca, seguida por uma mesclagem.

clone

Quando você se envolve com um projeto existente, já haverá um repositório de origem. Você precisa baixar uma cópia para o seu sistema. Isso é conseguido criando um clone .

garfo

Para projetos (de código aberto) no GitHub (ou BitBucket), você tem privilégios de leitura, mas não pode gravar no repositório. Isso significa que você não pode enviar nenhuma alteração para a origem.

Para superar isso, você pode criar uma nova origem, fazendo com que o GitHub clone o repositório, criando uma nova origem especialmente para você. Sua cópia original é chamada de fork .

Após a bifurcação, você deve clonar sua própria origem, não a original. Se você já clonou o projeto original, não se preocupe, você pode alterar o endereço de origem a qualquer momento.

solicitação de puxar

Se você tiver um repositório bifurcado, pode querer realimentar suas alterações para o projeto original. Para fazer isso, você envia uma solicitação pull ao desenvolvedor do projeto original. Ele revisará suas alterações e poderá escolher se deseja ou não mesclá-las.

Uma solicitação de pull é sempre feita no GitHub ou BitBucket, nunca em sua máquina local.

Ao criar uma solicitação pull, você está selecionando um branch em seu fork e no projeto original. Observe que, quando você envia as alterações para esse branch, elas acabam no pull request, evento após o pull request ter sido enviado. Portanto, é recomendado sempre criar um novo branch para uma solicitação pull chamada algo como ‘patch-fixedxyz’.

Ferramentas

linha de comando

Git é originalmente uma ferramenta de linha de comando. Na maioria dos tutoriais, você encontrará comandos como git pull origin master. O uso é recomendado se você estiver realmente confortável com o shell.

árvore fonte

Existem vários aplicativos GUI para trabalhar com git. Eu recomendo usar SourceTree . Um cliente gratuito para Windows e Mac. Usá-lo pode ser um pouco desafiador no início, mas aguente firme. Ele oferece uma ótima visão geral do repositório e suporta a maioria dos recursos do git.

leitura adicional

  • Try Git é um ótimo tutorial git interativo (da Code School e GitHub).
  • Atlassian tem um ótimo guia e tutorial sobre como trabalhar com o git.
  • Para saber mais sobre o git, leia o Pro Git . Disponível online e gratuitamente.
  • Os Guias do GitHub mostrarão como usar o GitHub.