Git

From Feliwiki
Jump to: navigation, search
Don't speak Portuguese? Try it instead: Git-en

Git para preguiçosos

Guia prático do Git. Autor: micaroni@gmail.com (fml.eti.br). Licença: CC-by.
Veja também esta página semelhante (em inglês): Git for the lazy

O Git é um sistema de controle de versões.

Contents


Como instalar o Git

No Windows

Baixe e instale a versão mais recente em:

Outros sistemas

Dê uma olhada em:

Conceitos básicos

Veja o artigo sistema de controle de versões da Wikipédia para ter uma noção sobre esse tipo de sistema. O conceito do Git é um pouco diferente do CVS e SVN, pois é um sistema distribuído e com muito mais recursos de controle do histórico e de branchs de desenvolvimento. Toda cópia local contém todo o histórico de desenvolvimento e os commits são feitos localmente. Somente com o comando push é que as alterações são enviadas para o repositório de origem.

Nota: Veja também http://git.or.cz/gitwiki/GitSvnComparsion para ter uma idéia melhor das vantagens e desvantagens do Git sobre o SVN.

Primeira vez

Configurar o nome do usuário (importante!):

$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com

Colocar cores:

$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto

Habilitar git-rerere (opcional):

$ git config --global rerere.enabled 1

Como baixar um repositório remoto

$ cd ~/wa-git
(veja working area para entender o que significa o diretório wa-git mencionado acima.)
$ git clone <URL do repositório>

Exemplo:

$ git clone ssh://felipe@fml.eti.br/var/git/util

Como criar um novo repositório local

$ cd ~/wa-git
$ cd <diretório-do-seu-projeto>
$ git init
$ git add .

Como adicionar novos arquivos ao controle de versão

$ git add <nome-do-arquivo> — mas tenha cuidado para não enviar arquivos indesejados.
$ git add . — adiciona todos os arquivos do diretório atual para baixo recursivamente.

Como receber alterações

$ git pull

Para receber alterações em um branch específico

$ git checkout <local-branch>
$ git pull origin <remote-branch>

Como enviar alterações

$ git commit -a — faz um commit local de todos os arquivos modificados.

E uma destas opções:

Trabalhando com branchs e tags

Para criar tag

$ git tag -a <tag-name>
$ git push --tags

Para criar branch

Para criar um branch e já dar checkout para ele:

$ git checkout -b <nome-novo-branch>

ou

$ git branch <nome-novo-branch> (porém ele não dá checkout para o novo branch)

e para enviar ao servidor:

$ git push -u origin <nome-novo-branch> — para enviar apenas um branch

ou

$ git push --all — envia todos os branchs locais para o repositório de origem

Para listar branchs

$ git branch (lista somente os locais)
$ git branch -a (lista todos)
$ git branch -r (lista somente os remotos)

Para alternar para um branch, tag ou versão

$ git checkout [-f] <branch, tag ou versão> — a opção -f faz com que arquivos modificados localmente sejam perdidos.

Caso o branch que você alterne não seja "local", ou seja, caso seja uma versão no histórico, uma tag ou mesmo um branch remoto (no estilo origin/<nome-do-branch>) você deve fazer um "checkout -b <nome-do-branch>" em seguida para criar um branch local.

Para remover um branch

$ git branch -d <nome do branch>

Para remover um branch remoto

$ git branch -d -r origin/<name-of-branch>
$ git push origin :<name-of-branch> (obs.: sem o origin)

Para mesclar

$ git checkout <nome do branch destino> (você deve "estar" no branch de destino)
$ git merge <nome do branch origem> [--no-ff] (a opção --no-ff serve para não permitir o fast foward)

Desfazendo

Desfazendo um commit específico e manter o histórico

$ git revert <versao>

Reverter apenas alguns arquivos ou path

$git checkout <versao> -- <path>

Onde <versao> é o número da versão correta do arquivo.

Desfazendo arquivo adicionado no git por engano

$ git rm --cached <file> (funciona antes e depois do commit, recomendado!)

ou

$ git reset HEAD <file> (apenas antes do commit)

Desfazendo alterações locais

Para todos os arquivos
$ git reset --hard HEAD
Apenas para alguns arquivos
$ git checkout <path>

Outros comandos úteis

Adicionar arquivos ao ignore list

$ echo "padrao*" >> .gitignore

Para verificar se todos os arquivos indesejados já estão no ignore list use o comando:

$ git status

Até que a mensagem "nothing to commit (working directory clean)" apareça. Depois de fazer isso, você pode enviar o próprio arquivo .gitignore ao repositório:

$ git add .gitignore
$ git commit

Verificar quantas versões desde o início (versão estilo SVN)

O seguinte comando conta quantos commits foram dados desde a primeira versão:

$ git log --pretty=oneline --all | wc -l

Mostrar histórico com o nome dos arquivos modificados

$ git log --stat

Como dar pull ou push sem o SSH pedir a senha toda vez

Verificando a diferença entre a versão atual e o último commit de um determinado arquivo

$ git diff <arquivo>

Use diff --color-words para destacar as palavras modificadas

Verificando as modificações locais

$ git diff [-b] (a opção -b ignora os espaços em brancos)

Verificar diferença entre dois branchs

$ git diff <branch1>..<branch2> --stat

O mesmo que git diff HEAD^..HEAD

$ git show

Como reduzir o uso de espaço em disco

Tente apenas
$ git gc --aggressive
Avançado
$ git repack -a -d --window=50 --depth=50 --window-memory=1024m

Mostrar estatísticas básicas sobre alterações

Tente aplicar o parâmetro --stat em diversos comandos, como o git log e git diff por exemplo.

Mostrar informações sobre o repositório remoto

É útil porque ele exibe a URL do repositório caso você tenha esquecido.

$ git remote show origin

Opção para ignorar espaços em branco e quebras de linha

Use -w junto com comandos de diff ou quando usar --stat para que o diff ignore todos os espaços em brancos.

Git avançado

Já debulhou o git e está se sentindo limitado? Aprenda a refazer o histórico, a dar commit em apenas uma parte do arquivo, a mesclar diversos branchs em um só etc.

Git com Subversion (SVN)

Ligações externas

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox