Git
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