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. Reverter commits já enviados é trabalhoso, por isso revise seus commits antes de enviá-los ao repositório remoto;
- 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:
- Alterar os arquivos no seu diretório de trabalho;
- Colocar os arquivos na área de staging (comunica que serão commitados no próximo snapshot);
- 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.