{"slug": "lista-de-comandos-uteis-do-git", "title": "Lista de comandos úteis do GIT", "summary": "This article provides a list of useful Git commands, covering configuration, file management, commits, branches, and remote repositories. It explains how to set up Git via the `.gitconfig` file and details commands for tracking changes, merging branches, and managing tags. The guide also clarifies the use of `.gitignore` files and the roles of the master branch and HEAD pointer.", "body_md": "- Modificado (modified);\n- Preparado (staged/index)\n- Consolidado (comitted);\ngit help\ngit help add\ngit help commit\ngit help <qualquer_comando_git>\nAs 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).\nAs configurações realizadas através dos comandos abaixo serão incluídas no arquivo citado acima.\ngit config --global user.name \"Leonardo Comelli\"\ngit config --global user.email leonardo@software-ltda.com.br\ngit config --global core.editor vim\ngit config --global merge.tool vimdiff\ngit config --global core.excludesfile ~/.gitignore\ngit config --list\nOs 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:\n-\nGeral: 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.\n-\nPor 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.\ngit init\ngit status\ngit add meu_arquivo.txt\ngit add meu_diretorio\ngit add .\ngit add -f arquivo_no_gitignore.txt\ngit commit meu_arquivo.txt\ngit commit meu_arquivo.txt meu_outro_arquivo.txt\ngit commit meuarquivo.txt -m \"minha mensagem de commit\"\ngit rm meu_arquivo.txt\ngit rm -r diretorio\ngit log\ngit log -p -2\ngit log --stat\ngit log --pretty=oneline\ngit log --pretty=format:\"%h - %an, %ar : %s\"\n- %h: Abreviação do hash;\n- %an: Nome do autor;\n- %ar: Data;\n- %s: Comentário.\nVerifique as demais opções de formatação no Git Book\ngit log -- <caminho_do_arquivo>\ngit log --summary -S<palavra> [<caminho_do_arquivo>]\ngit log --diff-filter=M -- <caminho_do_arquivo>\n- O pode ser substituido por: Adicionado (A), Copiado (C), Apagado (D), Modificado (M), Renomeado (R), entre outros.\ngit log --author=usuario\ngit blame -L 12,22 meu_arquivo.txt\nEste comando deve ser utilizando enquanto o arquivo não foi adicionado na staged area.\ngit checkout -- meu_arquivo.txt\nEste comando deve ser utilizando quando o arquivo já foi adicionado na staged area.\ngit reset HEAD meu_arquivo.txt\nSe o resultado abaixo for exibido, o comando reset não alterou o diretório de trabalho.\nUnstaged changes after reset:\nM meu_arquivo.txt\nA alteração do diretório pode ser realizada através do comando abaixo:\ngit checkout meu_arquivo.txt\ngit remote\ngit remote -v\ngit remote add origin git@github.com:leocomelli/curso-git.git\ngit remote show origin\ngit remote rename origin curso-git\ngit remote rm curso-git\nO primeiro push de um repositório deve conter o nome do repositório remoto e o branch.\ngit push -u origin master\nOs demais pushes não precisam dessa informação\ngit push\ngit pull\ngit fetch\ngit clone git@github.com:leocomelli/curso-git.git\ngit tag vs-1.1\ngit tag -a vs-1.1 -m \"Minha versão 1.1\"\nPara criar uma tag assinada é necessário uma chave privada (GNU Privacy Guard - GPG).\ngit tag -s vs-1.1 -m \"Minha tag assinada 1.1\"\ngit tag -a vs-1.2 9fceb02\ngit push origin vs-1.2\ngit push origin --tags\nO master é o branch principal do GIT.\nO HEAD é um ponteiro especial que indica qual é o branch atual. Por padrão, o HEAD aponta para o branch principal, o master.\ngit branch bug-123\ngit checkout bug-123\nNeste caso, o ponteiro principal HEAD esta apontando para o branch chamado bug-123.\ngit checkout -b bug-456\ngit checkout master\ngit merge bug-123\nPara 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.\nA mensagem indicando um merge manual será:\nAutomerging meu_arquivo.txt\nCONFLICT (content): Merge conflict in meu_arquivo.txt\nAutomatic merge failed; fix conflicts and then commit the result.\ngit branch -d bug-123\ngit branch\ngit branch -v\ngit branch --merged\ngit branch --no-merged\ngit push origin bug-123\ngit push origin bug-123:new-branch\ngit checkout -b bug-123 origin/bug-123\ngit push origin:bug-123\nFazendo o rebase entre um o branch bug-123 e o master.\ngit checkout experiment\ngit rebase master\nMais informações e explicações sobre o Rebasing\n###Stash\nPara 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.\ngit stash\ngit stash list\ngit stash apply\ngit stash apply stash@{2}\nOnde 2 é o indíce do stash desejado.\ngit stash branch meu_branch\ngit commit --amend -m \"Minha nova mensagem\"\nAlterando os três últimos commits\ngit rebase -i HEAD~3\nO editor de texto será aberto com as linhas representando os três últimos commits.\npick f7f3f6d changed my name a bit\npick 310154e updated README formatting and added blame\npick a5f4a0d added catfile\nAltere para edit os commits que deseja realizar alterações.\nedit f7f3f6d changed my name a bit\npick 310154e updated README formatting and added blame\npick a5f4a0d added catfile\nFeche o editor de texto.\nDigite o comando para alterar a mensagem do commit que foi marcado como edit.\ngit commit –amend -m “Nova mensagem”\nAplique a alteração\ngit rebase --continue\nAtenção: É possível alterar a ordem dos commits ou remover um commit apenas mudando as linhas ou removendo.\nSeguir os mesmos passos acima, porém marcar os commtis que devem ser juntados com *squash\ngit filter-branch --tree-filter 'rm -f passwords.txt' HEAD\nO bisect (pesquisa binária) é útil para encontrar um commit que esta gerando um bug ou uma inconsistência entre uma sequência de commits.\ngit bisect start\ngit bisect bad\ngit bisect good vs-1.1\nO 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.\ngit bisect good\nSe o commit estiver com o problema, então ele deverá ser marcado como ruim.\ngit bisect bad\nDepois de encontrar o commit com problema, para retornar para o HEAD utilize:\ngit bisect reset\nSinta-se a vontade para realizar adicionar mais informações ou realizar correções. Fork me!", "url": "https://wpnews.pro/news/lista-de-comandos-uteis-do-git", "canonical_source": "https://gist.github.com/leocomelli/2545add34e4fec21ec16", "published_at": "2014-05-23 05:48:23+00:00", "updated_at": "2026-05-23 12:05:53.031760+00:00", "lang": "en", "topics": ["developer-tools", "open-source"], "entities": ["Leonardo Comelli", "GIT", "Windows", "Linux"], "alternates": {"html": "https://wpnews.pro/news/lista-de-comandos-uteis-do-git", "markdown": "https://wpnews.pro/news/lista-de-comandos-uteis-do-git.md", "text": "https://wpnews.pro/news/lista-de-comandos-uteis-do-git.txt", "jsonld": "https://wpnews.pro/news/lista-de-comandos-uteis-do-git.jsonld"}}