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…