Como a grande maioria das IDEs e Editores de código já possuem ferramentas gráficas para gerenciar o versionamento de código, você pode acabar se acomodando à esses recursos simplificados e não se preocupar em aprender outras maneiras de fazê-lo.
Pode ser que você se veja numa situação onde a sua ferramenta favorita não esteja disponível (como numa prova, por exemplo) ou em outra onde a única ferramenta disponível para manipulação do sistema operacional seja o tão temido Terminal.
Com o domínio absoluto de sistemas operacionais baseados em Linux no mercado de servidores*, é bem provável que você passe por algo parecido um dia, caso não tenha ainda.
Sendo assim, separei alguns comandos essenciais para o fluxo de trabalho do dia a dia, agrupados por estágio de utilização para facilitar o entendimento.
Configuração
Configurações iniciais:
git config --global user.name "John Doe"
- denifir nome global do usuário.git config --global user.email "john_doe@gitlab.com"
- definir email global do usuário.
Início
Duas maneiras simples para iniciar um repositório git local em seu HD:
-
git clone [url do repositório]
- caso o repositório já exista no servidor remoto e você quer criar um repositório local exatamente igual ao remoto -
git init
- caso você queira transformar a pasta atual em um repositório git. Após a criação, é necessário adicionar o endereço do servidor remoto para que possa enviar ao servidor as alterações realizadas localmente:git remote add origin [url do repositório]
.
Feito isso, você já está pronto para utilizar o versionamento de forma local.
Branches
Após o passo anterior, você automaticamente estará trabalhando na branch master, o que pode não ser considerado uma boa prática por parte da equipe. Geralmente você vai querer criar uma branch para desenvolvimento e, depois das implementações concluídas, aplicá-las à branch master como conclusão de suas tarefas.
-
git checkout -b [nome da branch]
- cria a branch localmente e já altera a cópia de trabalho atual. -
git push -u
- envia as alterações locais para o servidor remoto, já criando uma branch com o mesmo nome da local.
Gerenciamento
Comandos utilizados com maior frequência, após as fases de configuração anteriores:
-
git pull
- sincroniza a versão local com as alterações persistidas no servidor remoto, enviadas desde a última vez que este comando foi executado. O servidor irá bloquear suas alterações caso a sua versão local esteja desatualizada. -
git add [arquivo ou caminho]
- coloca o arquivo, ou arquivos no caminho, na fila para o próximo envio de dados ao servidor. -
git status
- exibe um relatório de alterações realizadas localmente para conferência. -
git reset HEAD [arquivo]
- caso mude de ideia sobre alguma alteração na fila de envios, utilize este comando para descartar as alterações, removendo assim o arquivo da fila de envio. -
git commit -m "[mensagem]"
- aplica as alterações que estavam na fila até então no seu servidor local. -
git push
- envia para o servidor remoto o pacote de atualizações produzido localmente na sua máquina, desde a última sincronização.
Analisando alterações
Para consultar o histórico de alterações, utilize o comando:
-
git log
- abre uma lista descritiva sobre os commits realizados até então. É possível aplicar diversas opções de filtro, como por exemplo: -
git log --max-count=5
- para exibir os últimos cinco -
git log --author=John Doe
- para exibir somente commits enviados pelo usuário “John Doe” -
git log --stat
- para ver estatísticas de alteração em cada commit -
git log --since=2.weeks
- commits das últimas duas semanas
.gitignore
Para ignorar alterações em arquivos e pastas de maneira automática no repositório,
é preciso criar o arquivo .gitignore
, que nada mais é que um arquivo de texto,
sem extensão, onde você irá definir em cada linha o que deverá ser ignorado pelo versionamento.
As definições escritas podem ser arquivos, pastas, subpastas, arquivos de uma determinada extensão, etc…