Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Lista de comandos úteis do GIT

#GIT

Estados

  • Modificado (modified);
  • Preparado (staged/index)
  • Consolidado (comitted);

Ajuda

Geral
git help
Comando específico
git help add
git help commit
git help <qualquer_comando_git>

Configuração

Geral

As configurações do GIT são armazenadas no arquivo .gitconfig localizado dentro do diretório do usuário do Sistema Operacional (Ex.: Windows: C:\Users\Documents and Settings\Leonardo ou *nix /home/leonardo).

As configurações realizadas através dos comandos abaixo serão incluídas no arquivo citado acima.

Setar usuário
git config --global user.name "Leonardo Comelli"
Setar email
git config --global user.email leonardo@software-ltda.com.br
Setar editor
git config --global core.editor vim
Setar ferramenta de merge
git config --global merge.tool vimdiff
Setar arquivos a serem ignorados
git config --global core.excludesfile ~/.gitignore
Listar configurações
git config --list

Ignorar Arquivos

Os nomes de arquivos/diretórios ou extensões de arquivos listados no arquivo .gitignore não serão adicionados em um repositório. Existem dois arquivos .gitignore, são eles:

  • Geral: Normalmente armazenado no diretório do usuário do Sistema Operacional. O arquivo que possui a lista dos arquivos/diretórios a serem ignorados por todos os repositórios deverá ser declarado conforme citado acima. O arquivo não precisa ter o nome de .gitignore.

  • Por repositório: Deve ser armazenado no diretório do repositório e deve conter a lista dos arquivos/diretórios que devem ser ignorados apenas para o repositório específico.

Repositório Local

Criar novo repositório

git init

Verificar estado dos arquivos/diretórios

git status

Adicionar arquivo/diretório (staged area)

Adicionar um arquivo em específico
git add meu_arquivo.txt
Adicionar um diretório em específico
git add meu_diretorio
Adicionar todos os arquivos/diretórios
git add .	
Adicionar um arquivo que esta listado no .gitignore (geral ou do repositório)
git add -f arquivo_no_gitignore.txt

Comitar arquivo/diretório

Comitar um arquivo
git commit meu_arquivo.txt
Comitar vários arquivos
git commit meu_arquivo.txt meu_outro_arquivo.txt
Comitar informando mensagem
git commit meuarquivo.txt -m "minha mensagem de commit"

Remover arquivo/diretório

Remover arquivo
git rm meu_arquivo.txt
Remover diretório
git rm -r diretorio

Visualizar hitórico

Exibir histórico
git log
Exibir histórico com diff das duas últimas alterações
git log -p -2
Exibir resumo do histórico (hash completa, autor, data, comentário e qtde de alterações (+/-))
git log --stat
Exibir informações resumidas em uma linha (hash completa e comentário)
git log --pretty=oneline
Exibir histórico com formatação específica (hash abreviada, autor, data e comentário)
git log --pretty=format:"%h - %an, %ar : %s"
  • %h: Abreviação do hash;
  • %an: Nome do autor;
  • %ar: Data;
  • %s: Comentário.

Verifique as demais opções de formatação no Git Book

Exibir histório de um arquivo específico
git log -- <caminho_do_arquivo>
Exibir histórico de um arquivo específico que contêm uma determinada palavra
git log --summary -S<palavra> [<caminho_do_arquivo>]
Exibir histórico modificação de um arquivo
git log --diff-filter=M -- <caminho_do_arquivo>
  • O pode ser substituido por: Adicionado (A), Copiado (C), Apagado (D), Modificado (M), Renomeado (R), entre outros.
Exibir histório de um determinado autor
git log --author=usuario
Exibir revisão e autor da última modificação de uma bloco de linhas
git blame -L 12,22 meu_arquivo.txt 

Desfazendo operações

Desfazendo alteração local (working directory)

Este comando deve ser utilizando enquanto o arquivo não foi adicionado na staged area.

git checkout -- meu_arquivo.txt
Desfazendo alteração local (staging area)

Este comando deve ser utilizando quando o arquivo já foi adicionado na staged area.

git reset HEAD meu_arquivo.txt

Se o resultado abaixo for exibido, o comando reset não alterou o diretório de trabalho.

Unstaged changes after reset:
M	meu_arquivo.txt

A alteração do diretório pode ser realizada através do comando abaixo:

git checkout meu_arquivo.txt

Repositório Remoto

Exibir os repositórios remotos

git remote

git remote -v

Vincular repositório local com um repositório remoto

git remote add origin git@github.com:leocomelli/curso-git.git

Exibir informações dos repositórios remotos

git remote show origin

Renomear um repositório remoto

git remote rename origin curso-git

Desvincular um repositório remoto

git remote rm curso-git

Enviar arquivos/diretórios para o repositório remoto

O primeiro push de um repositório deve conter o nome do repositório remoto e o branch.

git push -u origin master

Os demais pushes não precisam dessa informação

git push

Atualizar repositório local de acordo com o repositório remoto

Atualizar os arquivos no branch atual
git pull
Buscar as alterações, mas não aplica-las no branch atual
git fecth

Clonar um repositório remoto já existente

git clone git@github.com:leocomelli/curso-git.git

Tags

Criando uma tag leve
git tag vs-1.1
Criando uma tag anotada
git tag -a vs-1.1 -m "Minha versão 1.1"
Criando uma tag assinada

Para criar uma tag assinada é necessário uma chave privada (GNU Privacy Guard - GPG).

git tag -s vs-1.1 -m "Minha tag assinada 1.1"
Criando tag a partir de um commit (hash)
git tag -a vs-1.2 9fceb02
Criando tags no repositório remoto
git push origin vs-1.2
Criando todas as tags locais no repositório remoto
git push origin --tags

Branches

O master é o branch principal do GIT.

O HEAD é um ponteiro especial que indica qual é o branch atual. Por padrão, o HEAD aponta para o branch principal, o master.

Criando um novo branch
git branch bug-123
Trocando para um branch existente
git checkout bug-123

Neste caso, o ponteiro principal HEAD esta apontando para o branch chamado bug-123.

Criar um novo branch e trocar
git checkout -b bug-456
Voltar para o branch principal (master)
git checkout master
Resolver merge entre os branches
git merge bug-123

Para realizar o merge, é necessário estar no branch que deverá receber as alterações. O merge pode automático ou manual. O merge automático será feito em arquivos textos que não sofreram alterações nas mesmas linhas, já o merge manual será feito em arquivos textos que sofreram alterações nas mesmas linhas.

A mensagem indicando um merge manual será:

Automerging meu_arquivo.txt
CONFLICT (content): Merge conflict in meu_arquivo.txt
Automatic merge failed; fix conflicts and then commit the result.
Apagando um branch
git branch -d bug-123
Listar branches
Listar branches
git branch
Listar branches com informações dos últimos commits
git branch -v
Listar branches que já foram fundidos (merged) com o master
git branch --merged
Listar branches que não foram fundidos (merged) com o master
git branch --no-merged
Criando branches no repositório remoto
Criando um branch remoto com o mesmo nome
git push origin bug-123
Criando um branch remoto com nome diferente
git push origin bug-123:new-branch
Baixar um branch remoto para edição
git checkout -b bug-123 origin/bug-123
Apagar branch remoto
git push origin:bug-123

Rebasing

Fazendo o rebase entre um o branch bug-123 e o master.

git checkout experiment

git rebase master

Mais informações e explicações sobre o Rebasing

###Stash

Para alternar entre um branch e outro é necessário fazer o commit das alterações atuais para depois trocar para um outro branch. Se existir a necessidade de realizar a troca sem fazer o commit é possível criar um stash. O Stash como se fosse um branch temporário que contem apenas as alterações ainda não commitadas.

Criar um stash
git stash
Listar stashes
git stash list
Voltar para o último stash
git stash apply
Voltar para um stash específico
git stash apply stash@{2}

Onde 2 é o indíce do stash desejado.

Criar um branch a partir de um stash
git stash branch meu_branch

Reescrevendo o histórico

Alterando mensagens de commit
git commit --amend -m "Minha nova mensagem"
Alterar últimos commits

Alterando os três últimos commits

git rebase -i HEAD~3

O editor de texto será aberto com as linhas representando os três últimos commits.

pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added catfile

Altere para edit os commits que deseja realizar alterações.

edit f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added catfile

Feche o editor de texto.

Digite o comando para alterar a mensagem do commit que foi marcado como edit.

git commit –amend -m “Nova mensagem”

Aplique a alteração

git rebase --continue

Atenção: É possível alterar a ordem dos commits ou remover um commit apenas mudando as linhas ou removendo.

Juntando vários commits

Seguir os mesmos passos acima, porém marcar os commtis que devem ser juntados com *squash

Remover todo histórico de um arquivo
git filter-branch --tree-filter 'rm -f passwords.txt' HEAD

Bisect

O bisect (pesquisa binária) é útil para encontrar um commit que esta gerando um bug ou uma inconsistência entre uma sequência de commits.

Iniciar pequinsa binária
git bisect start
Marcar o commit atual como ruim
git bisect bad
Marcar o commit de uma tag que esta sem o bug/inconsistência
git bisect good vs-1.1
Marcar o commit como bom

O GIT irá navegar entre os commits para ajudar a indentificar o commit que esta com o problema. Se o commit atual não estiver quebrado, então é necessário marca-lo como bom.

git bisect good
Marcar o commit como ruim

Se o commit estiver com o problema, então ele deverá ser marcado como ruim.

git bisect bad
Finalizar a pesquisa binária

Depois de encontrar o commit com problema, para retornar para o HEAD utilize:

git bisect reset

Contribuições

Sinta-se a vontade para realizar adicionar mais informações ou realizar correções. Fork me!

@dalmosantos

This comment has been minimized.

Copy link

commented Apr 4, 2016

Opa, tudo bem?

Por gentileza, se possível, teria como adicionar o comando, para altear a url do git remote:

git remote set-url origin git@github.com:leocomelli/outro-curso-git.git

Abraços

@clebiovieira

This comment has been minimized.

Copy link

commented Feb 19, 2017

Ótimo guia.

@ezequiel88

This comment has been minimized.

Copy link

commented Mar 8, 2017

como saber o tamanho de um repositorio? tem comando pra isso?

@rrrose

This comment has been minimized.

Copy link

commented Apr 19, 2017

Seu guia está perfeito! Me ajudou muito!!! Vou divulgá-lo!

@fontnelle

This comment has been minimized.

Copy link

commented Apr 20, 2017

Ótimo guia parabéns!!

@maellson

This comment has been minimized.

Copy link

commented Apr 24, 2017

TOP!! muito bom!

@lcarlosilva

This comment has been minimized.

Copy link

commented Jun 14, 2017

Parabéns pela iniciativa @leocomelli ! Muito TOP esse guia.

@tuchinski

This comment has been minimized.

Copy link

commented Jun 28, 2017

Muito bom!! Me ajudou e ainda ajuda muito. Parabéns!

@carlosvasconcelosjr

This comment has been minimized.

Copy link

commented Jul 11, 2017

Mão na roda! Muito bom. Parabéns pela iniciativa.

@GraniteConsultingReviews

This comment has been minimized.

Copy link

commented Aug 28, 2017

Thanks for sharing this help me a lot

@pedromoraesh

This comment has been minimized.

Copy link

commented Sep 12, 2017

Adicione o comando "git config --get remote.origin.url", é util para pegar a URL do repositório, principalmente no uso em Shell Scripts

@noglipe

This comment has been minimized.

Copy link

commented Sep 12, 2017

Muito Bom

@ArieltonPires

This comment has been minimized.

Copy link

commented Sep 16, 2017

very nice!

@nuneswesley

This comment has been minimized.

Copy link

commented Oct 1, 2017

Muito bom!
Mas gostaria de deixar uma observação: sobre o comando git fecth seria git fetch.
Obrigado

@silv4b

This comment has been minimized.

Copy link

commented Oct 19, 2017

Muito bom o seu guia amigo, aprendi bastante! Irei divulgar.

@leylson

This comment has been minimized.

Copy link

commented Oct 31, 2017

Ótimo trabalho!

@RickieSouza

This comment has been minimized.

Copy link

commented Jan 11, 2018

Muito bom!

@wmsilva

This comment has been minimized.

Copy link

commented Jan 24, 2018

Muito bom material me ajudou muito.

@DanielDonizetttibatista

This comment has been minimized.

Copy link

commented Feb 3, 2018

mo bom mas o meu está escrevendo: to many arguments
o que estou fazendo de errado?

@RodrigoTenorio86

This comment has been minimized.

Copy link

commented Feb 21, 2018

mto grato.

@paulloandrade

This comment has been minimized.

Copy link

commented Mar 14, 2018

Muito bom esse guia de comandos, obrigado !!

@demacdolincoln

This comment has been minimized.

Copy link

commented Mar 23, 2018

primeiramente: simples, direto, bem completo, realmente parabéns

segundamente: meus 2 dedos de contribuição ~> exemplo de como adicionar um alias no git:

git config --global alias.graph 'log --graph --oneline --all --decorate'

daí basta ir num repositório cheio de branches e fazer git graph para ver um log mostrando os caminhos de cada branch

(vi isso na archwiki )

@erikrossetti

This comment has been minimized.

Copy link

commented Mar 27, 2018

Obrigado por compartilhar!
Faltou o comando para remover o diretório adicionado por engano:
git rm --cached -r directory-name

@samuelrvg

This comment has been minimized.

Copy link

commented Apr 3, 2018

Existe algum comando que me possibilita enviar apenas um trecho de código de um arquivo, e não o arquivo todo que foi modificado?

No sourcetree existe essa possibilidade, tem como fazer no git ?

@BrunoRebelato

This comment has been minimized.

Copy link

commented Apr 23, 2018

Obrigado por compartilhar , grato !!!!

@saenyra

This comment has been minimized.

Copy link

commented May 5, 2018

Muito útil, obrigada !

@faellesales

This comment has been minimized.

Copy link

commented May 9, 2018

Parabéns, muito bom!

@lemenezes

This comment has been minimized.

Copy link

commented May 17, 2018

Valeu demais!!!!

@filipenickel

This comment has been minimized.

Copy link

commented May 21, 2018

TOp

@cianortetem

This comment has been minimized.

Copy link

commented May 28, 2018

Olá tudo bem?
como eu consigo resolver esse problema.
tenho uma pasta, dentro dela existe outras pastas e arquivos variados,
em uma determinada pasta está o conteúdo que eu preciso compartilhar
mais quando eu faço o push, o conteúdo desta pasta não sobe,
e no github fica um ícone de duas pastinhas com o nome do commit,
mais a pasta esta vazia, não sobe o conteúdo dela e no git status não mostra
modificações desta pasta e apresenta

pasta(modified content, untracked content)

se puder me ajudar eu agradeço.

@Diogo-Nobrega

This comment has been minimized.

Copy link

commented May 29, 2018

Muito boa essa lista de comandos. Obrigado por compartilhar.

@isweluiz

This comment has been minimized.

Copy link

commented Jun 7, 2018

Tks

@NicolasWoitchik

This comment has been minimized.

Copy link

commented Jul 2, 2018

Muito bom a lista de comandos.
Teria algum comando para enviar um único arquivo quando o "push to master" em um servidor remoto fosse disparado ?
Tipo em um site se eu fizesse uma alteração no arquivo index.html e fizesse um commit deste arquivo e logo após o commit eu fizesse um push to master ao invés de enviar todos os arquivos, enviasse somente a index.html ?

Não sei se deu pra entender, qualquer coisa eu tento explicar melhor...
Obrigado desde já :)

@NicolasWoitchik

This comment has been minimized.

Copy link

commented Jul 3, 2018

Muito bom a lista de comandos.
Teria algum comando para enviar um único arquivo quando o "push to master" em um servidor remoto fosse disparado ?
Tipo em um site se eu fizesse uma alteração no arquivo index.html e fizesse um commit deste arquivo e logo após o commit eu fizesse um push to master ao invés de enviar todos os arquivos, enviasse somente a index.html ?

Não sei se deu pra entender, qualquer coisa eu tento explicar melhor...
Obrigado desde já :)

@rafaelturquia

This comment has been minimized.

Copy link

commented Jul 13, 2018

O que é pull request? Valeu

@carolpandim

This comment has been minimized.

Copy link

commented Jul 17, 2018

Adorei, obrigada!!!

@Alexlopesdev

This comment has been minimized.

Copy link

commented Jul 22, 2018

muito bom

@DiegoSantosWS

This comment has been minimized.

Copy link

commented Aug 7, 2018

Guia me ajuda muito, ele está como uma das referências no manual interno aqui da empresa parabéns!

@AdrianoRabello

This comment has been minimized.

Copy link

commented Aug 13, 2018

Parabéns amigo. A melhor explicação e post que já vi sobre git !

@leticiacamposs2

This comment has been minimized.

Copy link

commented Aug 18, 2018

Que guia maravilhoso, já salvei salvei nos meus favoritos <3

@mauroscs

This comment has been minimized.

Copy link

commented Aug 23, 2018

Parabéns Leonardo!!! Seu documento me ajudou muito!! Estou iniciando agora com o Git e confesso que a ferramenta é top!!!
Por gentileza, por acaso você sabe como posso utilizar os comandos "Ctrl C e Ctrl V" no terminal Git?

@cleefsouza

This comment has been minimized.

Copy link

commented Aug 24, 2018

Parabéns, ótimo guia 👍

@0limpi0

This comment has been minimized.

Copy link

commented Aug 28, 2018

como adicionar files/diretorios num commit ja feito??

@BergSabbath

This comment has been minimized.

Copy link

commented Sep 24, 2018

esse guia eh meu salvador.. sempre recorro a ele.. obrigado!

@marcelopoars

This comment has been minimized.

Copy link

commented Sep 24, 2018

Show de bola! Parabéns.

@lfcfernando

This comment has been minimized.

Copy link

commented Sep 28, 2018

Muito bom, obrigado por compartilhar seu conhecimento!

@felipecodes

This comment has been minimized.

Copy link

commented Jan 10, 2019

cool

@sartorileonardo

This comment has been minimized.

Copy link

commented Jan 17, 2019

Gostei da lista, parabéns!

@starlleytk

This comment has been minimized.

Copy link

commented Feb 1, 2019

Amigo o seguinte codigo esta errado...

git fecth

Corrigindo :

git fetch

@lucasrodrigues1910

This comment has been minimized.

Copy link

commented Feb 1, 2019

olá eu consigo abrir o sublime 3 normalmente com o comando subl, mas na hora de fazer o commit, o editor que abre ainda e o 'vim', ja tentei varios tutoriais na net, consegue me ajudar a resolver? obrigado!

@hugogomess

This comment has been minimized.

Copy link

commented Feb 24, 2019

vlw man

@felipesudrj

This comment has been minimized.

Copy link

commented Mar 14, 2019

Alguem conhece uma forma de empacotar as mudanças de um commite e gerar um zip com elas?
partindo do cenário que tenho que enviar tudo por FTP apos concluir minhas atividades.

@RonanUFPa

This comment has been minimized.

Copy link

commented Apr 2, 2019

Excelente, Obrigado!

@RobertaMelo

This comment has been minimized.

Copy link

commented Apr 4, 2019

Muito top mesmo! Obrigada :)

@galloaleonardo

This comment has been minimized.

Copy link

commented Apr 11, 2019

Uma pequena contribuição aqui:

Puxar um commit específico de um branch para outro:
git cherry-pick <commit hash (SHA-1)>

Exemplo:
git cherry-pick 8f801338069f66e3c06cfed93a9eaff43bda8jn

@marcuspereiradev

This comment has been minimized.

Copy link

commented Apr 27, 2019

Muito bom!
Tem algum comando onde eu possa ver, depois de adicionar a chave ssh no github, se estou conectado ou não?

@jhonalves1026

This comment has been minimized.

Copy link

commented May 16, 2019

Como posso executar o código do github, para ver-lo funcionando???

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.