Um sistema de controle de versão
NADA
WTF professor?
Alternativamente temos...
Então vamos criar nossa conta e começar a brincar de versionar
Professor, eu criei minha conta, mas como que eu uso isso?
Caso você use Windows
Caso você use Linux
Caso você use Mac
Mas Wendel,
Repositórios, Commits e Branches
Pastas onde ficam os arquivos do seu projeto
São como fotos do seu trabalho
O que são? Por que usamos? O que acontece com elas? Hoje, no Git repórter
Uma branch é basicamente
BIRLLLLLL
init, clone, config, add, commit, etc...
$ git init
Inicializa um repositório(lembra dos repositórios?) no diretório atual
$ git remote add origin https://github.com/usuario/repositorio.git
Adiciona um repositório remoto
$ git clone https://github.com/usuario/repositorio.git
O git clone faz um download de um repositório remoto, caso você não esteja começando um do zero, é ele que você deve usar
git remote add origin https://github.com/usuario/repositorio.git
$ git pull
O git pull faz o download de todas as alterações que foram feitas no repositório
Mas isso é simples, 2 comandinhos
Nome
$ git config --global user.name "Seu nome"
E email
$ git config --global user.email email@email.com
Dentro do index.html, digite
<html></html>
Dentro do style.css, digite
body: { background: #666; }
Salve e volte ao Git Bash, precisamos subir estes arquivo para o nosso repositório remoto
Primeiro, precisamos ver quais os arquivos que alteramos
$ git status
Este comando deve te retornar algo parecido com isso:
$ git add index.html
Com isso, estamos quaaaase prontos para subir nossos arquivos para o nosso repositório remoto. Precisamos apenas dar um commit
$ git commit -m "Criação do index"
Agora estamos prontos para subir para o repositório remoto
Vamos dar um --amend
$ git commit --amend
O --amend permite que você "edite" o commit anterior, isso inclui adicionar outros arquivos aquele commit
$ git push origin master
Esse é o "comando do alívio"
$ git status
Relembrando...
$ git branch nomedobranch
Isso irá automaticamente fazer uma cópia do seu estado atual na branch nomedobranch
$ git checkout nomedobranch
O comando checkout muda o seu HEAD
$ git checkout branchDestino
$ git merge branchOrigem
Isso irá iniciar o processo de merge, que pode resultar em duas coisas
Vamos entender melhor isso
Professor, resolvi o conflito, e agora?
$ git add index.html
$ git commit -m "Resolvendo conflitos"
$ git push origin master
$ git checkout 9b669aa
$ git revert 9b669aa
Ele volta você ao commit especificado e permite com que você crie um novo commit a partir deste
$ git reset HEAD
Até aqui tudo ok, ele irá remover os arquivos que você mandou pra área de staging
$ git reset --hard 9b669aa
Isso apaga tudo o que você fez e volta seu repositório para o estado do commit 9b669aa
Professor,
Das técnicas ninja
$ git pull --rebase origin branch
Reescreve o histórico de commits. Muito útil para facilitar a resolução de conflitos
$ git reflog
Parecido com o git log, porém não traz apenas o histórico de commits. Traz desde commits até checkouts, resets, rebases, etc
O cara que acha o bug pra você
$ git bisect start
$ git bisect bad HEAD
$ git bisect good 9b669aa