Instalar o Git

O GitHub disponibiliza clientes desktop que incluem um interface gráfico para as ações mais comuns. Estes clientes também incluem ferramentas para a linha de comandos para cenários mais avançados. Em ambos os casos, os clientes são atualizados automáticamente.

GitHub para Windows

windows.github.com

GitHub para Mac

mac.github.com

Distribuições de Git para Linux e sistemas POSIX estão disponíveis no site oficial do Git SCM.

Git para todas as plataformas

git-scm.com

Configurar o Git

Configurar os detalhes de utilizador ao nível do sistema:

$ git config --global user.name "[nome]"

Configura o nome que ficará associado aos Git commits

$ git config --global user.email "[endereco-de-email]"

Configura o email que ficará associado aos Git commits

Criar repositórios

Criar um novo repositório ou obter um já existente a partir do URL:

$ git init [nome-do-projeto]

Cria um novo repositório local com o nome de projecto especificado

$ git clone [url]

Faz download de um projeto, incluindo toda a sua história

Fazer alterações

Ver estado das alterações e criar um commit

$ git status

Lista todos os ficheiros modificados no projecto atual

$ git diff

Mostra as diferenças linha a linha dos ficheiros alterados (pre-stage)

$ git add [ficheiro]

Adiciona um ficheiro à área de preparação para que possa ser incluído em commits (staged)

$ git diff --staged

Mostra as diferenças linha a linha dos ficheiros preparados e alterados (pre-stage)

$ git reset [ficheiro]

Remove o ficheiro da área de preparação (staged) sem o remover do sistema de ficheiros

$ git commit -m "[mensagem descritiva]"

Guarda as alterações preparadas permanentemente no histórico de versões

Branching (história paralela)

Crie uma versão parelala do histórico de versões para trabalhar em isolamento.

$ git branch

Lista todos os branches locais no repositório atual

$ git branch [nome-do-branch]

Cria um novo branch

$ git switch -c [nome-do-branch]

Muda para o branch especificado e atualiza o diretório de trabalho

$ git merge [nome-do-branch]

Combina a história do branch especificado com o branch atual

$ git branch -d [nome-do-branch]

Remove o branch especificado

Alteração de ficheiros

Mover e remover os ficheiros já versionados

$ git rm [ficheiro]

Marca o ficheiro para remoção do repositório local e remove o ficheiro do sistema de ficheiros (staged)

$ git rm --cached [ficheiro]

Remove o ficheiro do controlo de versão mas preserva-o no diretório de trabalho

$ git mv [ficheiro-original] [ficheiro-renomeado]

Muda o nome do ficheiro e o prepara-o para o commit

Ignorar ficheiros

Ignore ficheiros e diretórios temporários

*.log
build/
temp-*

Um ficheiro .gitignore na raiz do projecto previne o versionamento acidental de ficheiros e diretórios correspondentes aos padrões especificados

$ git ls-files --others --ignored --exclude-standard

Lista todos os ficheiros e directórios ignorados neste projeto

Guardar alteracões temporariamente

Guarde e restaure mudanças temporárias

$ git stash

Armazena temporariamente todos os ficheiros modificados

$ git stash pop

Restaura os ficheiros previamente guardados na stash

$ git stash list

Lista todos os conjuntos de alterações na stash

$ git stash drop

Remove os últimos ficheiros guardados na stash

Navegue e inspecione a história do projeto

$ git log

Lista o histórico de versões para o branch atual

$ git log --follow [ficheiro]

Lista o histórico de versões para um ficheiro, incluindo mudanças de nome

$ git diff [primeiro-branch]...[segundo-branch]

Mostra a diferença de conteúdo entre dois branches

$ git show [commit]

Mostra as mudanças de conteúdo e metadada do commit especificado

Manipular a história de versões

Remove commits e refazer a história de versões

$ git reset [commit]

Aponta o ambiente de trabalho para o commit especificado, preservando alteracões locais e descartando o histórico de versões posteriores.

$ git reset --hard [commit]

Aponta o ambiente de trabalho para o commit especificado, sem preservar alteracões e descartando o histórico de versões posteriores.

Sincronizar alteracões

Actualiza e combina alteracões entre repositórios

$ git fetch [remote]

Faz download de todo o histórico de um repositório remoto

$ git merge [remote]/[branch]

Combina a história do branch especificado com o branch atual.

$ git push [remote] [branch]

Envia todos os commits do branch local para o GitHub

$ git pull

Download e merge num só comando. Igual a executar git fetch && git merge