Git

Git

2018, Sep 29    

Git é um sistema de controle de versão distribuído. Em outras palavras é tal uma máquina do tempo que permite voltar qualquer ponto no passado ou trafegar entre as diversas alterações feitas por outras pessoas. E ainda permite combinar as partes exatas de cada contribuição para deixar sempre a melhor versão para o futuro. Por ser um sistema distribuido, funciona completamente localmente. Assim podemos controlar as alterações sem a necessidade de qualquer contato com outro servidor.

Como funciona ?

Podemos criar marcos temorais com identificando o momento exato de alinhamento dos planetas de um conjunto de alterações. Diferente de sistemas de compartilhamento de arquivos que sincronizam todas as alterações. Com git estamos apenas interessados em agrupar e enviar as mais importântes. Cada “marco temporal” é representado por um commit.

Isto permite que possamos voltar os arquivos no tempo a qualquer momento para aquele commit registrado. De forma que independente de quanto mudarmos tudo, sempre existirá uma cópia segura para retornar.

Guia Rápido de Comandos

Marcando alterações para commit

Dá para adicionar arquivos diretamente:

git add meuArquivoAlterado.txt

Ou ainda adicionar todos os arquivos alterados de uma vez:

git add -u

Voltando para o passado

Voltando tudo para a última versão registrada:

git checkout HEAD

Voltando somente um arquivo para última versão registrada:

git checkout HEAD myFile

Corrigindo um commit passado (antes de enviar para o remote)

Mensagem de commit com erros ? Apenas digite este comando e corrija:

git commit --amend

Remover commit anterior completamente

Esqueceu algo no commit ? Apenas use reset e faça de novo.

git reset HEAD~

Reset to remote

Comece com tudo limpo, reset o ramo para o mesmo estado do remoto

git fetch # Baixa todas as atualizações sem executar merge
git reset --hard origin/master # Força estado igual ao do remoto

Lista de arquivos alterados entre um commit e outro

git diff --name-only --diff-filter=AM HEAD~3..HEAD

ref: https://git-scm.com/docs/git-diff#Documentation/git-diff.txt—name-only

Listar commits fora da árvore

Para achar commits perdidos pode usar

git log --reflog