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 histó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 fetch

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

dalmosantos 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

clebiovieira commented Feb 19, 2017

Ótimo guia.

@ezequiel88

This comment has been minimized.

Copy link

ezequiel88 commented Mar 8, 2017

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

@rrrose

This comment has been minimized.

Copy link

rrrose commented Apr 19, 2017

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

@fontnelle

This comment has been minimized.

Copy link

fontnelle commented Apr 20, 2017

Ótimo guia parabéns!!

@maellson

This comment has been minimized.

Copy link

maellson commented Apr 24, 2017

TOP!! muito bom!

@lcarlosilva

This comment has been minimized.

Copy link

lcarlosilva commented Jun 14, 2017

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

@tuchinski

This comment has been minimized.

Copy link

tuchinski commented Jun 28, 2017

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

@carlosvasconcelosjr

This comment has been minimized.

Copy link

carlosvasconcelosjr commented Jul 11, 2017

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

@GraniteConsultingReviews

This comment has been minimized.

Copy link

GraniteConsultingReviews commented Aug 28, 2017

Thanks for sharing this help me a lot

@pedromoraesh

This comment has been minimized.

Copy link

pedromoraesh 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

noglipe commented Sep 12, 2017

Muito Bom

@ArieltonPires

This comment has been minimized.

Copy link

ArieltonPires commented Sep 16, 2017

very nice!

@nuneswesley

This comment has been minimized.

Copy link

nuneswesley 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

silv4b commented Oct 19, 2017

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

@leylson

This comment has been minimized.

Copy link

leylson commented Oct 31, 2017

Ótimo trabalho!

@RickieSouza

This comment has been minimized.

Copy link

RickieSouza commented Jan 11, 2018

Muito bom!

@wmsilva

This comment has been minimized.

Copy link

wmsilva commented Jan 24, 2018

Muito bom material me ajudou muito.

@DanielDonizetttibatista

This comment has been minimized.

Copy link

DanielDonizetttibatista 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

RodrigoTenorio86 commented Feb 21, 2018

mto grato.

@paulloandrade

This comment has been minimized.

Copy link

paulloandrade commented Mar 14, 2018

Muito bom esse guia de comandos, obrigado !!

@demacdolincoln

This comment has been minimized.

Copy link

demacdolincoln 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

erikrossetti 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

samuelrvg 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

BrunoRebelato commented Apr 23, 2018

Obrigado por compartilhar , grato !!!!

@sivyboing

This comment has been minimized.

Copy link

sivyboing commented May 5, 2018

Muito útil, obrigada !

@faellesales

This comment has been minimized.

Copy link

faellesales commented May 9, 2018

Parabéns, muito bom!

@lemenezes

This comment has been minimized.

Copy link

lemenezes commented May 17, 2018

Valeu demais!!!!

@filipenickel

This comment has been minimized.

Copy link

filipenickel commented May 21, 2018

TOp

@cianortetem

This comment has been minimized.

Copy link

cianortetem 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

Diogo-Nobrega commented May 29, 2018

Muito boa essa lista de comandos. Obrigado por compartilhar.

@isweluiz

This comment has been minimized.

Copy link

isweluiz commented Jun 7, 2018

Tks

@NicolasWoitchik

This comment has been minimized.

Copy link

NicolasWoitchik 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

NicolasWoitchik 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

rafaelturquia commented Jul 13, 2018

O que é pull request? Valeu

@carolpandim

This comment has been minimized.

Copy link

carolpandim commented Jul 17, 2018

Adorei, obrigada!!!

@Alexlopesdev

This comment has been minimized.

Copy link

Alexlopesdev commented Jul 22, 2018

muito bom

@DiegoSantosWS

This comment has been minimized.

Copy link

DiegoSantosWS 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

AdrianoRabello 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

leticiacamposs2 commented Aug 18, 2018

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

@mauroscs

This comment has been minimized.

Copy link

mauroscs 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

cleefsouza commented Aug 24, 2018

Parabéns, ótimo guia 👍

@0limpi0

This comment has been minimized.

Copy link

0limpi0 commented Aug 28, 2018

como adicionar files/diretorios num commit ja feito??

@BergSabbath

This comment has been minimized.

Copy link

BergSabbath commented Sep 24, 2018

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

@marcelopoars

This comment has been minimized.

Copy link

marcelopoars commented Sep 24, 2018

Show de bola! Parabéns.

@lfcfernando

This comment has been minimized.

Copy link

lfcfernando commented Sep 28, 2018

Muito bom, obrigado por compartilhar seu conhecimento!

@felipecodes

This comment has been minimized.

Copy link

felipecodes commented Jan 10, 2019

cool

@sartorileonardo

This comment has been minimized.

Copy link

sartorileonardo commented Jan 17, 2019

Gostei da lista, parabéns!

@starlleytk

This comment has been minimized.

Copy link

starlleytk commented Feb 1, 2019

Amigo o seguinte codigo esta errado...

git fecth

Corrigindo :

git fetch

@lucasrodrigues1910

This comment has been minimized.

Copy link

lucasrodrigues1910 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

hugogomess commented Feb 24, 2019

vlw man

@felipesudrj

This comment has been minimized.

Copy link

felipesudrj 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

RonanUFPa commented Apr 2, 2019

Excelente, Obrigado!

@RobertaMelo

This comment has been minimized.

Copy link

RobertaMelo commented Apr 4, 2019

Muito top mesmo! Obrigada :)

@galloaleonardo

This comment has been minimized.

Copy link

galloaleonardo 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

marcuspereiradev 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

jhonalves1026 commented May 16, 2019

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

@caiomyrapereira

This comment has been minimized.

Copy link

caiomyrapereira commented Jun 15, 2019

vlw ai man.

@Maxuelreis

This comment has been minimized.

Copy link

Maxuelreis commented Jul 19, 2019

Conteúdo de muitíssima utilidade. vlw bro.

@RodrigoStuani

This comment has been minimized.

Copy link

RodrigoStuani commented Sep 1, 2019

Me ajudou bastante.. Muito obrigado! o>

@alexandresys

This comment has been minimized.

Copy link

alexandresys commented Sep 2, 2019

show ajudou bastante.. Muito obrigado! valeu

@thiagotancredi

This comment has been minimized.

Copy link

thiagotancredi commented Sep 9, 2019

Muito bom!! Grato pela lista.

@maykonsousa

This comment has been minimized.

Copy link

maykonsousa commented Sep 13, 2019

T acessando mais essa página que o facebook. apanho demais nesse github veeei. Muito top o seu guia

@alanrepo

This comment has been minimized.

Copy link

alanrepo commented Sep 19, 2019

Sugiro uma pequena correção na linha 106 :
image
https://gist.github.com/alanrepo/e750cccd2aa01379468fcfe59dbc9e75

@ThiagoFranco25

This comment has been minimized.

Copy link

ThiagoFranco25 commented Nov 14, 2019

vlw meu consagrado

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.