Skip to content

Instantly share code, notes, and snippets.

@leocomelli
Last active March 27, 2024 20:44
Star You must be signed in to star a gist
Save leocomelli/2545add34e4fec21ec16 to your computer and use it in GitHub Desktop.
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!

@MayconArs
Copy link

ÓTIMO GUIA
Foi uma grande ajuda, valeu pelo conteudo

@EdesonABizerril
Copy link

Acho que vale a pena também adicionar o comando para reverter o último commit.

Desfazer último commit
git reset HEAD~

@alexx-ander28
Copy link

alexx-ander28 commented Nov 15, 2021 via email

@yvanshaw1
Copy link

show

@paulohenriqueviegasmartins

Top demais!!

@PauloJose-PJ
Copy link

Muito bom será de grande ajuda!! Obrigado!

@NathanFirmo
Copy link

Muito bom! Parabéns!!!

@alexx-ander28
Copy link

alexx-ander28 commented Jan 28, 2022 via email

@NathanFirmo
Copy link

Olá, @alexx-ander28, sobre sua pergunta:

obg pelo feedback, mas... Qual arquivo seria? poderia ser especifico?

Eu me referi à essa gist criada pelo @leocomelli

@alexx-ander28
Copy link

alexx-ander28 commented Feb 1, 2022 via email

@Leandro-FM
Copy link

Leandro-FM commented Feb 7, 2022

Obrigado ! Pegar pronto não tem preço. Material excelente resumido de forma objetiva, com sua permissão irei usar o seu arquivo git.md em um aplicativo mobile de consultas rapidas para comandos : {Git, Docker, linux e etc..} para iniciantes em programação.

Obrigado pelo excelente trabalho !
Irei fazer citação de sua autoria .

@Aribsb
Copy link

Aribsb commented Feb 21, 2022

Parabéns pelo trabalho! me ajudou muito obrigado.

@brazadrian
Copy link

Me ajudou muito. Obrigado!

@Jamersrod
Copy link

Muito obg por compartilhar!

@KendiHashimoto
Copy link

Muito bom!

@jsvenancio
Copy link

Bom tutorial.

@marcoscclanzoni
Copy link

#Show
#Parabens

@jsvenancio
Copy link

Posso alterar a localização "Origin" para outra pasta que criei "GitHub". Sera o local onde vou trabalhar.

Exemplo:
De:
git remote add origin git@github.com:leocomelli/curso-git.git
Para:
git remote add \Users\jsvenancio\Documents\GitHub git@github.com:leocomelli/curso-git.git

@samuelsilvati
Copy link

Excelente conteúdo, vai me ajudar bastante. Obrigado!

@AnaPaulaSM
Copy link

Obrigada, conteúdo sensacional!

@mozar86
Copy link

mozar86 commented May 15, 2022

Cara, como você é prático, ajudou muito, com sua licença, vou clonar rsrs

@rsqxda
Copy link

rsqxda commented May 18, 2022

show!

@alandemarcos
Copy link

Vlw demais

@iamlucasgomes
Copy link

Todo desenvolvedor tem que conhecer esse repositório, conteúdo de altíssima qualidade

@Rafael01Melo
Copy link

Parabéns pela organização do conteúdo.

@mosiahrs
Copy link

Ótimo conteúdo e disposição de informações.

@JuanDiegoAlvesNunes
Copy link

como cria um link?

@Matthew2079
Copy link

Arquivo muito bom , obrigado !

@Eliabe-Ribeiro-22
Copy link

ótimo conteúdo! Parabéns"

@silviamontouto
Copy link

silviamontouto commented Jul 19, 2022

Você está de parabéns , amei o conteúdo, me ajudou muito..

@Eliabe-Ribeiro-22
Copy link

como cria um link?

A sua pergunta é saber como se cria um link em MarkDown?

Use esse link para a pagina do facebook

[link para a pagina do facebook](https://www.facebook.com)

@Eliabe-Ribeiro-22
Copy link

como cria um link?

A sua pergunta é saber como se cria um link em MarkDown?

Use esse link para a pagina do facebook

[link para a pagina do facebook](https://www.facebook.com)

O que coloquei na ultima linha de minha mensagem é o código que vc precisa colocar, para criar o link.

@Kaique-Silva-Sousa
Copy link

Top! irá ajudar.

@AnderRodrigues
Copy link

AnderRodrigues commented Aug 2, 2022

Como consigo atualizar todas as minhas branches locais para ficar exatamente igual ao que está remoto?

Por exemplo, tenho algumas branches locais que não estão mais no repositório. Gostaria de apagá-las.

@vitorsl16
Copy link

top, de grande utilidade

@AVBDS001
Copy link

AVBDS001 commented Oct 4, 2022

O BRABO DOS BRABOS TO USANDO DMS ISSO AQUI

@rlopes93
Copy link

Muito top, vai ajudar muito.

@Chapalin
Copy link

Sensacional, comecei a usar o git a pouco tempo, essa lista vai me ajudar muito. Gratidão mano!!!!

@Salvador-Emanuel
Copy link

Resolveu todo meu problema

@alexx-ander28
Copy link

alexx-ander28 commented Nov 4, 2022 via email

@giljrsantos
Copy link

Muito bom.. Já coloquei esse link nos meus favoritos.

Att;
Gilberto Jr

@AntonioOsCria
Copy link

Galera, bom dia!

Como eu faço para fazer uma navegação, no quesito de procurar um código em como estava antes de X?

@PetrusBorges
Copy link

Parabéns pela organização!

@alexx-ander28
Copy link

alexx-ander28 commented Jan 11, 2023 via email

@lhmaruyama
Copy link

Muito obrigado!

@timausa
Copy link

timausa commented Jan 17, 2023

Bom dia pessoal,
Estou com um BO aqui, no meu repositório local tinha um arquivo com mais de 100MB e eu não tinha notado o tamanho do arquivo.
Ao realizar o push o git informou que o limite de tamanho excedeu, agora eu não consigo enviar mais nada do meu repositório local para o remoto.
Segue mensagem apresentada.
remote: Resolving deltas: 100% (38/38), completed with 13 local objects.
remote: error: Trace: xxxxxx
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File temp/seguro/Seguro_de_vida_NOVO2022.rtf is 112.13 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File temp/seguro/SeguroVida_NOVO2022.rtf is 112.07 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.

@alexx-ander28
Copy link

alexx-ander28 commented Jan 17, 2023 via email

@timausa
Copy link

timausa commented Jan 18, 2023

Tentou baixar normalmente e depois disso, compactar os arquivos?! Em ter., 17 de jan. de 2023 10:51, TI Mausa @.> escreveu:

@.
* commented on this gist. ------------------------------ Bom dia pessoal, Estou com um BO aqui, no meu repositório local tinha um arquivo com mais de 100MB e eu não tinha notado o tamanho do arquivo. Ao realizar o push o git informou que o limite de tamanho excedeu, agora eu não consigo enviar mais nada do meu repositório local para o remoto. Segue mensagem apresentada. remote: Resolving deltas: 100% (38/38), completed with 13 local objects. remote: error: Trace: xxxxxx remote: error: See http://git.io/iEPt8g for more information. remote: error: File temp/seguro/Seguro_de_vida_NOVO2022.rtf is 112.13 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: File temp/seguro/SeguroVida_NOVO2022.rtf is 112.07 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. — Reply to this email directly, view it on GitHub https://gist.github.com/2545add34e4fec21ec16#gistcomment-4439670 or unsubscribe https://github.com/notifications/unsubscribe-auth/AULKZV7X7QSMXYT5IJQEN4DWS2PWHBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVAYTCOJTHA4TMNNHORZGSZ3HMVZKMY3SMVQXIZI . You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

Não tentei baixar, mas nem chegou a subir para o repositório remoto.

@Luizfcs35
Copy link

otimo!

@GonayTwo
Copy link

Excelente conteúdo, obrigado.

@raquelpaiva
Copy link

Otimo, obrigada! :)

@guilhermeggloor
Copy link

Obrigado pelo conteúdo, amei a organização de como está estruturado !

@brunosb92
Copy link

Muito bom!
Estava pensando em fazer isso 😄
Obrigado 🙏
Parabéns!!!

@markryk
Copy link

markryk commented Jul 16, 2023

Parabéns pelo conteúdo, muito bom

@alexx-ander28
Copy link

alexx-ander28 commented Jul 17, 2023 via email

@emersonzaro
Copy link

Tentou baixar normalmente e depois disso, compactar os arquivos?! Em ter., 17 de jan. de 2023 10:51, TI Mausa @.> escreveu:

_
@**
.**_* commented on this gist. ------------------------------ Bom dia pessoal, Estou com um BO aqui, no meu repositório local tinha um arquivo com mais de 100MB e eu não tinha notado o tamanho do arquivo. Ao realizar o push o git informou que o limite de tamanho excedeu, agora eu não consigo enviar mais nada do meu repositório local para o remoto. Segue mensagem apresentada. remote: Resolving deltas: 100% (38/38), completed with 13 local objects. remote: error: Trace: xxxxxx remote: error: See http://git.io/iEPt8g for more information. remote: error: File temp/seguro/Seguro_de_vida_NOVO2022.rtf is 112.13 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: File temp/seguro/SeguroVida_NOVO2022.rtf is 112.07 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. — Reply to this email directly, view it on GitHub https://gist.github.com/2545add34e4fec21ec16#gistcomment-4439670 or unsubscribe https://github.com/notifications/unsubscribe-auth/AULKZV7X7QSMXYT5IJQEN4DWS2PWHBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVAYTCOJTHA4TMNNHORZGSZ3HMVZKMY3SMVQXIZI . You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

Não tentei baixar, mas nem chegou a subir para o repositório remoto.

Talvez isso te ajude: https://git-lfs.com/

@yTz-svg
Copy link

yTz-svg commented Aug 20, 2023

obrigado irmao

@GabrieloFranco
Copy link

muito obrigado meu amigo !!! ótimo conteúdo

@eribert0
Copy link

Great content!

@WallyDev7
Copy link

Obrigado pelo exelente conteudo, foi de grande ajuda!

@talilotarlison
Copy link

talilotarlison commented Oct 22, 2023

muito obrigado amigo !!! ótimo conteúdo

@JonasMoreira5
Copy link

Muito bom! me ajudou bastante nos momentos de dúvidas, excelente conteúdo!

@letiziacc
Copy link

Valeuuu

@Alberto-007
Copy link

Aprendendo git e isso foi de grande ajuda!
STREAM PINK FRIDAY 2

@fesalm3ida
Copy link

Valeu monstro sagrado !!

@LucasVTK
Copy link

valeu irmao, vai ajudar demais!

@wess-brito
Copy link

opa, valeu!!

@corde177
Copy link

O resumo que eu precisava, fico feliz por ter partilhado...

@SsrAndre
Copy link

Nem todo herói usa capa. alguns usam o GIT pra compartilhar conhecimento

Obrigado a todo mundo que contribuiu

@ManoelMorais
Copy link

Muito bom, nossa, isso vai agregar muito nos estudos

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment