O básico sobre git
Dado que algumas pessoas pessoas ainda enfrentam problemas com git, decidi escrever um post de 5 min sobre o tema para dar uma luz para o pessoal.
"Não, o git não é só um shell especial para windows"
"Sim, git e github são coisas diferentes"
Histórico / Comparativos
Segundo a Wikipedia, "Git foi criado pelo Linus Torvald para o desenvolvimento do kernel do linux.
A grande sacada do git é que ele é um modelo de repositório distribuido. Diferente do TFS que é um modelo centrado no servidor - onde se o servidor está fora ninguem consegue alterar código pq geralmente os plugins precisam sinalizar o lock do arquivo no servidor - com git você consegue fazer acompanhamento de alterações sem um servidor mestre. Ex:
# vai para a pasta temporária
cd /tmp
# cria uma pasta fake de projeto
mkdir app
cd app
# inicia um repositório
git init
# cria um arquivo qualquer
echo "meu arquivo de teste" > teste.txt
# Marca a alteração na área "stage" do git
git add teste.txt
# Adiciona ela ao repositório
git commit -m "Arquivo adicionado ao repositório"
E com isso você criou um repositório local, sem precisar de servidor. Dá para criar branches, fazer merges, etc e essas tarefas são executadas primeiramente local, só são publicadas para o repositório remoto quando requisitado (ex: usando git push
)
Comandos básicos
Usar o git por linha de comando ou usando alguma ferramenta visual é preferencia de cada desenvolvedor, mas eu particularmente acho mais produtivo usar git por linha de comando. Dentre os comandos mais usados:
git init |
inicia um repositório git. Só precisa ser executado 1x por repositório |
git add nomeDoArquivoOuPasta |
marcar o arquivo/pasta alterado a ser persistido |
git commit -m mensagem |
efetua a alteração no repositório |
git branch |
mostra os branches e o branch atual |
git status -s |
mostra o status das alterações (ex: arquivos marcados / alterados / excluidos) |
git remote -v |
mostra lista de repositórios remotos |
git remote add apelido urlDoRepositorio |
Cria um link para um repositório remoto. Necessário para subir o código para Github, Bitbucket, Heroku |
git push |
"empurra" as alterações locais para repositório remoto |
git pull |
baixa atualizações do repositório remoto |
Boas práticas
-
Fazer commits pequenos e frequentes
-
Usar informações úteis nos commits
-
Estudar outros modelos (ex: trunk base development, git flow)
-
Não demorar para fazer merge de feature branches para o future state
-
Usar git rebase
-
Ter um plano de CI que faça build+testes de todos os branches. Isso ajuda no code review e verificações para não impactar o branch principal
Aplicativos
Algumas sugestões para ver a arvore de alterações de modo gráfica:
Próximos passos
Fazer track de projetos ou notas na máquina local? Publicar um projeto para o github ou bitbucket? Fazer deploy de uma aplicação para o heroku? Contribuir com um projeto open source? As possibilidades são infinitas.