Terminal · Infra

Git

Official docs

Comandos locais

add

Adiciona arquivos ao index do Git

<FILE PATH>
Arquivo específico
-A
Todos os arquivos
Git
git add -A
branch

Cria, lista ou apaga branches

<BRANCH NAME>
Nome da branch a criar
-a
Lista as branches locais e remotas
-d
Apaga a branch, se ela já foi mesclada
-D
Apaga a branch mesmo sem ter sido mesclada
-r
Lista só as branches remotas
-m
Renomeia a branch
Git
git branch <BRANCH NAME>
checkout

Descarta as alterações locais e volta o arquivo ao último commit

<FILE PATH>
Arquivo específico
.
Todos os arquivos
Git
git checkout .
clean

Apaga do working tree os arquivos que o Git não rastreia

-d
Inclui os diretórios
-f
Força a remoção
Git
git clean -df
commit

Grava no histórico o que está no index

<COMMIT MESSAGE>
Mensagem do commit
-a
Todos os arquivos já rastreados
-m
Passa a mensagem na própria linha de comando
--amend
Reescreve o último commit em vez de criar outro
Git
git commit -am "<COMMIT MESSAGE>"
log

Mostra o histórico de commits

<FILE PATH>
Arquivo específico
--follow
Segue o histórico do arquivo através das renomeações
-p
Mostra o diff de cada commit
Git
git log --follow -p <PATH>
remote add

Registra um repositório remoto sob um apelido

<REMOTE NAME>
Apelido do remote
<REMOTE URL>
URL do repositório remoto
Git
git remote add <REMOTE NAME> <REMOTE URL>
remote remove

Remove um remote já registrado

<REMOTE NAME>
Apelido do remote
Git
git remote remove <REMOTE NAME>
reset

Move o HEAD para trás, desfazendo commits

<FILE PATH>
Arquivo específico
.
Todos os arquivos
--soft
Desfaz o commit e mantém as alterações no index
--soft HEAD~1
Desfaz só o último commit, mantendo as alterações
Git
git reset --soft HEAD~1
status

Mostra o estado do working tree e do index

Git
git status

Comandos remotos

clone

Copia um repositório remoto para a máquina

<REMOTE URL>
URL do repositório remoto
Git
git clone <REMOTE URL>
checkout

Cria uma branch local a partir de uma branch do remote

<BRANCH NAME>
Nome da branch
<REMOTE NAME>
Apelido do remote
-b
Cria a branch e já muda para ela
Git
git checkout -b <BRANCH NAME> <REMOTE NAME>/<BRANCH NAME>
fetch

Baixa os commits do remote sem tocar no working tree

Git
git fetch
pull

Baixa e integra as alterações do remote na branch atual

<BRANCH NAME>
Nome da branch
<REMOTE NAME>
Apelido do remote
--rebase
Reaplica os commits locais por cima, sem commit de merge
Git
git pull --rebase <REMOTE NAME> <BRANCH NAME>
push

Envia os commits locais para o remote

<BRANCH NAME>
Nome da branch
<REMOTE NAME>
Apelido do remote
-f
Força a escrita, sobrescrevendo o histórico remoto
-d
Apaga a branch no remote
Git
git push -f <REMOTE NAME> <BRANCH NAME>
rebase

Reaplica os commits da branch por cima de outra base

--continue
Retoma o rebase depois de resolver os conflitos
--abort
Cancela o rebase e volta ao estado anterior
Git
git rebase --continue
reset

Força a branch local a ficar idêntica à do remote

<BRANCH NAME>
Nome da branch
<REMOTE NAME>
Apelido do remote
--hard
Descarta as alterações locais e iguala ao remote
Git
git reset --hard <REMOTE NAME>/<BRANCH NAME>

Fluxossequências completas

rebase

Sequência para integrar o remote rebaseando e resolver o conflito

Git
git pull --rebase <REMOTE NAME> <BRANCH NAME>
git add -A
git rebase --continue
git rebase --abort
merge

Sequência para integrar o remote com merge

Git
git pull
git add -A
git commit -m "<COMMIT MESSAGE>"
merge de outra branch

Sequência para trazer outra branch para a atual

Git
git checkout <BRANCH NAME>
git merge <OTHER BRANCH NAME>
git add -A
git commit -m "<COMMIT MESSAGE>"
Git working tree
Git working tree