===== Exemplos do comando git =====
==== Nível Básico ====
* **Clonar um repositório remoto:**
- git clone https://github.com/usuario/repositorio.git
- Faz uma cópia completa do repositório remoto `repositorio.git` no diretório atual.
* **Inicializar um novo repositório local:**
- git init
- Inicializa um novo repositório Git no diretório atual.
* **Adicionar arquivos ao repositório (staging area):**
- git add arquivo.txt
- Adiciona o arquivo `arquivo.txt` à área de stage para ser commitado.
* **Fazer um commit com uma mensagem:**
- git commit -m "Mensagem do commit"
- Faz um commit das alterações adicionadas à área de stage com a mensagem "Mensagem do commit".
* **Verificar o status do repositório:**
- git status
- Exibe o status atual do repositório, mostrando arquivos modificados e pendentes de commit.
* **Visualizar o histórico de commits:**
- git log
- Exibe o histórico de commits do repositório, listando os commits mais recentes primeiro.
==== Nível Intermediário ====
* **Criar e trocar para uma nova branch:**
- git checkout -b nova_branch
- Cria uma nova branch chamada `nova_branch` e troca para ela.
* **Mesclar uma branch ao branch principal:**
- git checkout main
git merge nova_branch
- Troca para a branch `main` e mescla as alterações da branch `nova_branch` com ela.
* **Descartar alterações locais em um arquivo:**
- git checkout -- arquivo.txt
- Descarta as alterações locais no arquivo `arquivo.txt`, revertendo-o ao último commit.
* **Reverter um commit anterior:**
- git revert HEAD
- Reverte o último commit no repositório, criando um novo commit que desfaz as alterações.
* **Fazer um pull (baixar e mesclar) de um repositório remoto:**
- git pull origin main
- Baixa as últimas atualizações do branch `main` do repositório remoto `origin` e mescla-as com o branch local.
* **Visualizar as diferenças entre o estado atual e o último commit:**
- git diff
- Exibe as mudanças feitas no repositório, comparando o estado atual com o último commit.
* **Verificar os branches existentes e o branch atual:**
- git branch
- Exibe a lista de branches locais, destacando o branch ativo.
* **Apagar uma branch local:**
- git branch -d nome_branch
- Remove a branch `nome_branch` do repositório local (somente se já foi mesclada).
==== Nível Avançado ====
* **Resetar um arquivo da área de stage:**
- git reset arquivo.txt
- Remove o arquivo `arquivo.txt` da área de stage, sem alterar seu conteúdo.
* **Resetar um commit anterior (sem manter o histórico):**
- git reset --hard HEAD~1
- Desfaz o último commit e também remove as alterações do histórico.
* **Listar os commits em uma única linha:**
- git log --oneline
- Exibe o histórico de commits, mostrando cada commit em uma única linha.
* **Fazer push (enviar) de uma branch local para o repositório remoto:**
- git push origin nome_branch
- Envia a branch `nome_branch` para o repositório remoto `origin`.
* **Criar um repositório remoto e fazer o push inicial:**
- git remote add origin https://github.com/usuario/repositorio.git
git push -u origin main
- Adiciona o repositório remoto `origin` e faz o push do branch `main` para ele.
* **Rebase de commits (reorganizar commits):**
- git rebase main
- Reorganiza os commits da branch atual em cima dos commits do branch `main`.
* **Verificar as diferenças entre duas branches:**
- git diff branch1..branch2
- Compara as alterações entre as branches `branch1` e `branch2`.
* **Apagar uma branch remota:**
- git push origin --delete nome_branch
- Remove a branch `nome_branch` do repositório remoto.
==== Nível Especializado ====
* **Clonar um repositório de forma superficial (somente últimos commits):**
- git clone --depth 1 https://github.com/usuario/repositorio.git
- Faz um clone do repositório baixando apenas os últimos commits, reduzindo o tamanho do clone.
* **Squash de múltiplos commits em um único:**
- git rebase -i HEAD~3
- Combina os últimos três commits em um único commit durante o processo de rebase interativo.
* **Criar e aplicar um patch a partir de um commit específico:**
- git format-patch -1 HEAD
git apply patchfile.patch
- Cria um arquivo patch a partir do último commit e aplica esse patch ao repositório local.
* **Criar um tag para uma versão específica:**
- git tag -a v1.0 -m "Versão 1.0"
- Cria uma tag anotada `v1.0` para marcar o commit da versão 1.0.
* **Fazer push de uma tag para o repositório remoto:**
- git push origin v1.0
- Envia a tag `v1.0` para o repositório remoto.
* **Verificar as estatísticas de contribuições ao repositório:**
- git shortlog -s -n
- Exibe um resumo das contribuições ao repositório, classificando por número de commits.
* **Buscar alterações remotas sem mesclar automaticamente:**
- git fetch origin
- Baixa as alterações do repositório remoto `origin` sem mesclá-las automaticamente ao branch local.
* **Resolver conflitos de merge manualmente:**
- git mergetool
- Abre a ferramenta de merge para resolver conflitos após uma tentativa de mesclagem com conflitos.
* **Configurar um hook de pre-commit para automatizar verificações antes de cada commit:**
- echo "./verifica_codigo.sh" > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
- Configura um script que será executado automaticamente antes de cada commit, como uma verificação de estilo de código.