Projeto

Geral

Perfil

Guia básico de Git

Conceitos

  • VCS (Sistema de controle de versões) - Sistema que grava histórico de alterações de um arquivo, ou de um conjunto de arquivos, e possibilita revertê-los para um estado anterior.
  • CVCS (Sistema de controle de versões centralizado) - Um único servidor contendo todos os arquivos versionados e vários clientes fazendo check out. A administração é facilitada. Porém um único ponto de falha nesse servidor pode significar a perda de todo o histórico de versões (com exceção da versão local atual). SVN, CVS, etc...
  • DVCS (Sistema de controle de versão distribuído) - O cliente não faz check out da última versão dos arquivos do servidor, ele faz uma cópia de todo o repositório para sua máquina local, ou seja, se houver algum problema com o servidor remoto, existe um repositório local de backup. A administração das atividades é mais complexa. Git.

Termos relevantes

  • Snapshot - estado de um projeto (arquivos alterados em um commit com relação ao snapshot anterior);
  • Objeto commit - armazena as informações do snapshot
  • Branch - ramo de desenvolvimento. Aponta para um objeto commit que será base para o desenvolvimento do branch. Cada branch representa uma versão do projeto, e pode-se seguir uma linha de desenvolvimento a partir de cada branch;
  • Fork - é uma bifurcação, uma cópia de um projeto existente para seguir em nova direção;
  • Merge - é a capacidade de incorporar alterações do git, onde acontece uma junção dos branches;
  • Issue - é um ticket/atividade que pode descrever uma nova funcionalidade, a correção de um bug, ou uma tarefa que deverá ser executada dentro do projeto;
  • Origin - refere-se ao servidor remoto adicionado a um repositório
  • Origin/Nome_branch - refere-se às informações do branch do servidor remoto

Git básico

Apesar dos comandos serem similares ao SVN, a forma com que o Git trabalha com as informações é diferente.
Evite comparações entre as ferramentas para facilitar a compreensão.

  • Git trabalha com os dados em snapshots. Para cada alteração ele salva em um objeto commit o estado de todo o projeto e cria uma referência para o estado anterior;
  • Git permite trabalhar offline com o repositório local. Assim que a conexão estiver habilitada, faz-se o upload para o repositório remoto;
  • Git faz checksum com SHA1 e detecta arquivos corrompidos evitando a perda de dados em trânsito e garantindo a integridade.
  • Git geralmente só adiciona informações. É complexo, após o commit das informações, reverter o que foi alterado;
  • Git tem 3 estados nos quais os arquivos podem estar:
    • Commited: arquivos seguramente armazenados na base de dados local do seu repositório git.
    • Modified: arquivos alterados mas não commitados na base de dados local.
    • Staged: arquivos marcados como alterados e que serão enviados no commit do próximo snapshot.
  • Fluxo básico do Git:
    1. Alterar os arquivos no seu diretório de trabalho;
    2. Colocar os arquivos na área de staging (comunica que serão commitados no próximo snapshot);
    3. Commitar os arquivos e salvar as informações na base de dados do repositório local.

Ramificação

  • Um branch é um ramo de desenvolvimento isolado e sempre aponta para um objeto commit. O branch padrão do Git é o master.
  • Quando um branch é criado, ele aponta para o mesmo objeto commit do branch do qual foi derivado. Por exemplo: se quando criado um branch, o branch ativo era o master, esse novo branch aponta para o mesmo objeto commit que o branch master estava apontando.

Servidor remoto

  • Um repositório remoto é chamado de bare e não possui diretório de trabalho. Apenas guarda as informações, objetos e referências. A partir dele são feitos os clones locais (diretórios de trabalho).

Lembre-se: As alterações locais só serão conhecidas pelos outros colaboradores se forem enviadas para o servidor remoto.

Fontes de referência utilizadas na composição deste guia