· ferramentas · 8 min read
Comandos mais utilizados no Git
Comandos mais utilizados durante o Workflow com Git

Assim como montei um post para eu relembrar os comandos mais utilizados no Docker, montei esse texto com o intuito de termos um lugar para olhar quando esquecermos de algum comando que utilizamos diariamente no Git.
Se você não conhece Git, leia a introdução a versionamento de código e conhecendo o Git.
Então vamos aos comandos mais utilizados no Git!
Sumário
Caso você queira pular para algum comando específico.
Verificando as configurações locais
Quando trocamos de máquina podemos fazer um commit com um usuário ou email diferente, e isso pode estragar nosso histórico no Git.
Para verificar as configurações locais podemos usar o comando:
git config --listMas os mais comuns são para verificarmos o nome de usuário, email, editor e merge tool
Para encontrar o nome de usuário
git config --global user.namePara encontrar o email
git config --global user.emailAlterando as configurações locais
Para alterar as configurações de usuário e email locais, basta rodarmos os comandos acima com o novo valor passado como parâmetro entre aspas.
Alterar o nome de usuário
git config --global user.name "nome do usuário"Alterar o email
git config --global user.email "email do usuário"Alterando o editor de textos usados no commit e diffs
Quando fazemos um commit, devemos deixar uma mensagem, para isso podemos usar um editor de textos que facilite nossa vida.
Eu costumo utilizar o Vim, por isso rodaria:
git config --global core.editor vimTambém utilizo o Vim para diff/merges, então seria:
git config --global merge.tool vimdiffIniciar um repositório
Na pasta que será o novo repositório Git, execute o comando:
git initIgnorando arquivos
É extremamente normal ignorar arquivos no Git para não salvarmos arquivos de configuração dos nossos editores, arquivos temporários do nosso sistema operacional, dependências de repositório, etc.
Para isso criamos um arquivo chamado .gitignore e adicionamos os nomes dos arquivos nele.
Exemplo: gitignore para Nodejs.
”Baixar” um repositório
Para baixar um repositório do GitHub, Bitbucket, GitLab ou qualquer que seja o servidor do nosso projeto, devemos rodar o comando git clone com o link do repositório.
git clone linkExemplo:
Se eu quisesse baixar o repositório deste blog.
git clone git@github.com:woliveiras/woliveiras.github.io.gitBaixar as últimas alterações do servidor
Quando algo estiver diferente no nosso repositório remoto (no servidor), podemos baixar para a nossa máquina com o comando pull.
git pullListando o caminho do servidor
Para sabermos para onde estão sendo enviadas nossas alterações ou de onde estamos baixando as coisas, rodamos:
git remote -vExemplo de git remote -v no repositório deste blog:
origin git@github.com:woliveiras/woliveiras.github.io.git (fetch)
origin git@github.com:woliveiras/woliveiras.github.io.git (push)Adicionando o caminho do servidor
Caso tenhamos criado o repositório localmente antes de criar no servidor, podemos adicionar o caminho com o comando set-url.
git remote set-url origin git://urlExemplo:
git remote set-url origin git@github.com:woliveiras/woliveiras.github.io.gitAlterando o servidor
Para alterar o servidor onde hospedamos nosso repositório, usamos o mesmo comando set-url.
Exemplo:
git remote set-url origin git@github.com:woliveiras/woliveiras.github.io.gitAdicionando alterações
Quando alteramos algo, devemos rodar o comando git add para adicionar ao index e depois fechar um commit.
Adicionando um arquivo
git add nome_do_arquivoAdicionando tudo de uma vez
git add .OBS: Cuidado com esse comando, pois você pode adicionar algo que não queria.
Também podemos rodar git commit com o parâmetro -am, onde adicionamos tudo de uma vez e já deixamos uma mensagem para o commit.
Exemplo:
git commit -am "add tudo"Removendo arquivos do index
Para remover um arquivo do stage rodamos o comando reset.
git reset nome_do_arquivoPara remover tudo podemos fazer:
git reset HEAD .Salvando as alterações
Quando adicionamos com o git add ainda não estamos persistindo os dados no histórico do Git, mas adicionando a uma área temporária onde podemos ficar levando e trazendo alterações até garantirmos que algo realmente deve ser salvo, então rodamos o git commit.
Para fazer um commit, precisamos adicionar uma mensagem ao pacote, então rodamos com o parâmetro -m "mensagem".
Depois de ter adicionado as alterações com git add, rodamos:
git commit -m "mensagem"Verificando o que foi alterado
Para sabermos se tem algo que foi modificado em nossa branch, rodamos o comando git status.
git status
Será retornado uma lista de itens que foram alterados. Para saber o que exatamente aconteceu rodamos o comando git diff.
git diffSerá retornada uma tela com o que foi adicionado escrito com um +.

O que foi removido aparece com um -.

Caso tenhamos mais de um arquivo alterados por vez, podemos analisar todo o histórico com git diff ou observar somente um arquivo com git diff nome_do_arquivo.
Trabalhando com branches
Listando as branches existentes
git branchCriando uma nova branch
Podemos rodar o comando git branch ou git checkout, conforme os exemplos:
git branch nomeCriando uma nova branch e já trocando para ela
git checkout -b nome_da_nova_branchDeletando uma branch
git branch -d nomeTrocando de branch
git checkout nome_da_branch_existenteEnviando uma branch para o servidor
Caso tenhamos criado uma branch em nossa máquina, precisamos enviar ela para o servidor com o comando push, explicado mais abaixo neste texto, e passar alguns parâmetros que são o origin e nome da branch.
git push origin nome_da_branchPodemos mandar todas as novas branches locais para o servidor rodando:
git push --all originDeletando uma branch remota
Para deletar uma branch do servidor, rodamos o comando:
git push origin :nome_da_branchJuntando branches
Quando trabalhamos com branches, mais cedo ou mais tarde, vamos precisar juntar as nossas alterações com a branch master.
Para isso usamos o comando merge.
Exemplo:
Imagina que vamos fazer um merge da branch nome_branch na master.
git checkout master
git merge nome_branchEnviando as alterações para o servidor
Depois que finalizamos nossas alterações, fechamos nossos commits, então devemos enviar os commits para o servidor. Para isso rodamos o comando:
git push origin masterCaso estejamos em uma branch, devemos então rodar os comandos da sessão acima “Enviando uma branch para o servidor”.
Apagando, movendo ou renomeando arquivos ou pastas sem estragar nosso histórico Git
Quando deletamos algum arquivo, movemos de pastas, o Git fica com um histórico de deleção de arquivo e adição de outro.
Para que isso não aconteça, existem comandos do Git que salvam nossas vidas, o git rm, para deletar, e git mv, para movermos coisas.
Deletando arquivo ou pasta com Git
git rm nome_do_arquivo_ou_pastaLembrando que, para remover pastas, é sempre necessário que ela esteja vazia ou que executemos o comando rm com o parâmetro -r para que a deleção seja recursiva.
git rm -r pastaMovendo ou renomeando arquivo ou pasta com Git
git mv nome_do_arquivo_ou_pasta destinoRevertendo alterações
Existem diversas maneiras de desfazer coisas com o Git.
Desfazendo do stage
git reset nome_do_arquivoPara desfazer tudo podemos fazer:
git reset HEAD .Desfazendo alterações em um arquivo para o último commit
git checkout nome_do_arquivoDesfazendo tudo para o último commit
git checkout .Desfazendo uma alteração, mas colocando ela em stage
git reset --soft HEAD~1Onde HEAD~1 é relacionado ao último commit.
Desfazendo para o último commit sem colocar as alterações em stage
git reset --hard HEAD~1Desfazendo para um commit específico
Devemos procurar o hash do commit no histórico do Git e então executar:
git revert hashExemplo:
git revert ecdd2Onde ecdd2 são os cinco primeiros caracteres de um hash no meu log (que seria algo como ecdd2d09783b7d6fcd3b42dfdcf11cbd0644ac07).
Desfazendo o último push
git reset --hard HEAD~1 && git push -f origin masterOBS: Sempre tome cuidado ao usar o parâmetro -f.
Analisando o histórico (log)
Para ver todo o histórico podemos rodar o comando log.
git logObservando o histórico com um número certo de alterações
Podemos passar uma quantidade de commits que queremos olhar com o parâmetro -p.
git log -p -2Observando o log de maneira resumida
Podemos ver tudo em uma linha só utilizando o --pretty:
git log --pretty=oneline
Deixando o log ainda mais bonito
Podemos formatar o que queremos trazer no log utilizando --pretty com o parâmetro format.
git log --pretty=format:"%h = %an, %ar - %s"Onde
- %h: abreviação do hash;
- %an: nome do autor;
- %ar: data;
- %s: comentário
Podemos deixar melhor ainda com os parâmetros que encontramos aqui: git/pretty-formats.
Exibindo o histórico por pessoa
Podemos exibir o histórico de uma pessoa específica passando o parâmetro --author.
git log --author=nome_da_pessoa_ou_usuarioUtilizando tags
Criar uma tag Git
Rodamos o comando tag com o parâmetro que seria o nome da tag que queremos colocar.
Exemplo:
git tag 0.0.1Listando as tags Git
Para listar as tags existentes, rodamos o comando tag sem parâmetro.
git tagCriar uma tag com mensagem (anotada)
Utilizamos o parâmetro -a e -m:
git tag -a 0.0.1 -m "versão 0.0.1"Criar uma tag a partir de um commit
Podemos criar a tag referenciando um commit utilizando o hash do commit (que encontramos no histórico) com o comando -a.
git tag -a 0.0.1 b6120Criando a tag no servidor
Podemos criar somente uma tag específica:
git push origin 0.0.1Ou mandar todas de uma só vez:
git push origin --tagsUtilizando stash
Para armazenar algo no stash (uma área temporária onde guardamos o histórico sem realmente adicionar na master) podemos utilizar os seguintes comandos.
Salvar tudo no stash
git stashSalvando no stash com descrição
Quando precisamos salvar algo no stash para trocarmos de estado várias vezes e verificar como fica nesses estados, como em um protótipo, podemos fazer:
git stash save -u "mensagem"Listando o que existe em stash
git stash listRevertendo para o stash e removendo da lista
Podemos reverter nossas alterações para o stash e ainda remover uma entrada do stash list fazendo o seguinte:
Removendo a última entrada na lista.
git stash popRevertendo para o stash
A última entrada da lista, mas sem remover do stash:
git stash applyPara um item da lista.
Devemos olhar na lista do stash qual o item do histórico que queremos reverter e então rodar o comando apply.
git stash apply stash@{numero}