Projeto

Geral

Perfil

Gitintro » Histórico » Versão 2

Versão 1 (Mauricio Luiz Viani, 27/06/2016 14:56 h) → Versão 2/3 (Mauricio Luiz Viani, 28/06/2016 10:13 h)

h1. Guia básico de Git

* [[gitinstall|Instalação]]
* [[gitcomandos|Comandos básicos]]
* [[gitclone|Clonando o repositório do Expresso Livre]]

h2. 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. fica um pouco dificultada. _*Git.*_

h2. 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

h2. 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:

# 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.

h2. 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.

h2. 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.

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

* http://git-scm.com
* http://git-scm.com/book/pt-br/
* http://rogerdudler.github.com/git-guide/index.pt_BR.html