Tabela de conteúdos

Controle de versão com git

Introdução

Uma diferença básica que senti ao usar o git para controle de versão, se comparado com outros que usei antes, como cvs e subversion, é que ele mantém um repositório no local do desenvolvimento. Isso insere mais uma etapa no processo. Nas ferramentas de controle de versão, normalmente o commit é a etapa final que atualiza o repositório remoto. No git o commit atualiza o repositório local, onde você está desenvolvendo. Pra sincronizar com o repositório remoto é preciso fazer um push.

Nos comandos mostrados adotei a sintaxe comum dos manuais de *nix (man).

Preparando o ambiente

git init
git clone xxx://seu.site.git/usuario/repositorio

Esse link será fornecido no site.

git pull

Verificando o ambiente

git status [<nome>]
git log [<nome>]

Trabalhando numa mudança cotidiana

O fluxo mais comum de trabalho no dia-a-dia em um repositório já baixado vai ser:

Além desse fluxo pode precisar também desses comandos:

git add <nome>
git mv <nome>
git rm <nome>

Branches

Podem ser usados para experimentar, para guardar diferentes versões, para trabalho em equipe, para implementar nova funcionalidade e depois integrar com o curso principal, etc. Podem ser vistos como:

Usos do comando branch:

Nota: o comando checkout apenas reaponta a referência HEAD e atualiza a árvore de trabalho de acordo com tal apontamento.

git branch [-a]
git branch <nome do branch>
git checkout <nome do branch>
git checkout -b <nome do branch>
git branch -d <nome do branch>
git log --oneline --graph
push -u origin <branch>

Merging

Obtendo um manual sobre o assunto:

  $ git help merge

Tipos:

Realizando um merge tipo fast-forward:

# Uma conferida no status das coisas
$ git log --online --graph --all
$ git chechout master
$ git merge featureX
$ git branch -d featureX # opcional

Realizando um merge tipo commit

Rascunho

examine the history and state (see also: git help revisions)

 bisect     Use binary search to find the commit that introduced a bug
 grep       Print lines matching a pattern
 log        Show commit logs
 show       Show various types of objects
 status     Show the working tree status

grow, mark and tweak your common history

 branch     List, create, or delete branches
 checkout   Switch branches or restore working tree files
 commit     Record changes to the repository
 diff       Show changes between commits, commit and working tree, etc
 merge      Join two or more development histories together
 rebase     Reapply commits on top of another base tip
 tag        Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)

 fetch      Download objects and refs from another repository
 pull       Fetch from and integrate with another repository or a local branch
 push       Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some concept guides. See 'git help <command>' or 'git help <concept>' to read about a specific subcommand or concept.