Os comandos aqui usados não são necessariamente os mais rápidos de se praticar diariamente (há alguns que agrupam fases diferentes em uma mesma linha de comando). Mas para uma prática iniciante, vamos utilizar estes mesmo.
Com o Git CLI instalado em seu SO, seja Linux (geralmente, as distribuições o incluem nativamente), Mac ou Windows, abra o terminal do programa.
Para começar, vamos praticar o "lado cliente".
Cadastre as configurações globais em sua máquina para te identificar nos commits (use suas informações reais!):
git config --global user.name "Seu Nome"
git config --global user.email "nome@email.com"
Navegue até o diretório onde poderás fazer testes.
cd /home/yourUser
Crie um diretório vazio e acesse-o.
mkdir my_first_repo
cd my_first_repo
Inicie um repositório e verifique sua situação (ao usar Git diariamente, você fará essa consulta muitas vezes).
git init
git status
Agora crie um arquivo de texto em linguagem de marcação Markdown (a linguagem que os repositórios dos serviços Git usam para renderizar texto) chamado README.md
:
# Hello World!
Este é meu primeiro texto em Markdown.
Verifique novamente seu repositório:
git status
Muito bem. Há um arquivo que não está sendo acompanhado pelo Git. Vamos incluí-lo:
git add .
Agora vamos ao primeiro commit:
git commit -m "msg significativa e curta sobre o que você fez"
Verifique novamente seu repositório:
git status
Analise agora como fica o registro dos commits:
git log
Muita informação na tela?
git log --oneline
Quer visualizar o "movimento" dos commits nas branches?
git log --oneline --graph
Como no momento só há 1 branch e 1 commit, só aparecerá um *
.
Em programação, é uma prática comum desenvolver sistemas que se conectem com um Banco de Dados, por exemplo. Para tal operação, utiliza-se senha de determinado usuário do BD. Durante o desenvolvimento, essa senha fica no diretório do projeto, onde há um repositório Git sendo acompanhado. O que fazer, por exemplo, para o Git não acompanhar esse arquivo com a senha?
Cria-se um arquivo .gitignore
no diretório raíz do repositório.
Nele, você escreverá o caminho (a partir dessa raíz) para o arquivo ou diretório que desem ser ignorados.
Crie um segundo arquivo, chamado vcNaoMePega.md
com o texto:
### Oi, eu sei uma senha
Será?
Verifique (somente verifique) seu repositório:
git status
Agora crie o arquivo .gitignore
(sem formato de arquivo ao final), com o conteúdo:
vcNaoMePega.md
Mais uma vez:
git status
Crie uma nova branch.
git branch teste
Verifique a branch atual:
git branch
Entre nela (o workspace mudará para o da branch teste - cuidado com arquivos ainda não commitados na branch anterior):
git checkout teste
Verifique a branch atual:
git branch
Na branch teste, crie o arquivo teste_branch_teste.md
com o texto:
Esse arquivo foi criado na branch teste.
Verifique o repositório:
git status
git log --oneline --graph --all
O --all
aqui é para incluir os logs de todas as branches.
Commite-o:
git commit -m "test on test branch"
Agora retorne à branch main:
git checkout main
Verifique a branch atual:
git branch
Verifique o repositório:
git status
git log --oneline --graph --all
Agora implemente as mudanças da branch teste (uma nova funcionalidade que passou pelos testes e demais fases de implementação) na branch main:
git merge teste
Isso seria mais ou menos "Git, merge [from] <branch_source>"
Verifique o repositório:
git status
git log --oneline --graph --all
Voltemos ao arquivo README.md
e acrescente uma nova linha com o seguinte:
E esta é a minha segunda linha.
Consulte a diferença de conteúdo entre o último commit nesse arquivo e o momento atual:
git diff README.md
Vamos commitar a 2a linha do README com uma mensagem com erros:
git add .
git commit -m "eita, esqueci o q ia escrever"
No momento, as alterações foram efetivadas no repositório local. O conteúdo da mensagem que o descreve pode ser retificado assim:
git commit --amend -m "agora sim - 2a edição"
Crie o arquivo unstage.md
com o conteúdo:
Eu vou e volto.
Consulte o repositório:
git status
Ok, esse arquivo unstage.md
no momento está na Working area. Vamos colocá-lo na staged area e depois desistir da sua adição (antes de commita-lo!).
git add .
Consulte:
git status
Faça o unstage: Consulte:
git reset HEAD unstage.md
Consulte:
git status
Agora você desistiu mesmo do que você fez depois de determinado commit (aqui, voltaremos ao estágio do último commit):
git checkout -- unstage.md
Consulte:
git status
Funcionamento bem parecido com os comandos relativos a branches. Vale a pena praticar também.
Esse tópico já é assunto de outra palestra ;)