Observação:
Este guia reúne os principais comandos e fluxos de trabalho do Git, servindo como material de apoio para iniciantes e para quem deseja aprimorar seu conhecimento. Para um estudo mais aprofundado, recomendamos a leitura do Livro Gratuito de Git.
Contribuições:
Se você deseja ajudar a aprimorar este guia, sinta-se à vontade para realizar um fork e submeter uma pull request. Confira as diretrizes de contribuição para mais detalhes.
- Guia Prático de Git e GitHub Para Iniciantes
- Índice
- 0. Notas
- Conceitos Básicos: HEAD, Index e Working Directory
- 1. Inicializando o Repositório e Configurando o Usuário
- 2. Verificando o Status do Repositório
- 3. Adicionando Arquivos ao Index
- 4. Comitando Alterações
- 5. Visualizando Alterações
- 7. Restaurando Alterações com git restore
- 7.2 Restaurar um Arquivo no Index
- 6. Revertendo Alterações com Checkout
- 7. Desfazendo Commits com Reset
- 8 Mesclando Alterações com Merge
- 9 Chave SSH: O que é e como Gerar?
- 12. Trabalhando com Branches
- 13. Repositórios Remotos
-
Livro Gratuito:
Aprenda Git - Livro Oficial -
Recomendação:
Após instalar e configurar o Git, pratique criando repositórios locais e experimente os comandos básicos para compreender o fluxo de trabalho.
Antes de mergulhar nos comandos, é importante entender os três principais "estágios" no Git:
-
Working Directory (Diretório de Trabalho):
É a pasta do seu projeto, onde você edita os arquivos. Qualquer modificação feita aqui não é registrada no Git até que você as adicione ao staging. -
Index (ou Staging Area):
É uma área intermediária onde os arquivos modificados são preparados para o commit. Ao usar o comandogit add, você está movendo as alterações do Working Directory para o Index. -
HEAD:
Aponta para o commit atual (a "foto" mais recente do seu repositório). Quando você realiza um commit, o HEAD se move para o novo commit criado.
Compreender esses conceitos ajuda a entender melhor como os comandos do Git interagem com seus arquivos.
Antes de iniciar, é fundamental configurar seu nome de usuário e email. Essas informações identificarão os autores dos commits. Dica: Utilize o mesmo nome e email do seu perfil no GitHub.
git config --global user.email "seuemail@mail.com"
git config --global user.name "Seu Nome"Para conferir as configurações realizadas, execute:
git config --listCaso precise remover alguma configuração, use:
git config --global --unset user.email
git config --global --unset user.nameAgora, crie o repositório local:
git initUtilize o comando abaixo para visualizar o estado atual do seu repositório, identificando arquivos modificados, novos ou prontos para commit:
git statusO comando git add prepara os arquivos para o commit.
- Adicionar um arquivo específico:
git add nome_do_arquivo.js- Adicionar múltiplos arquivos:
git add arquivo1.js arquivo2.js arquivo3.js- Adicionar todos os arquivos modificados:
git add .Se Se adicionar um arquivo por engano, remova-o do index com:
git reset HEAD nome_do_arquivo.txtApós adicionar os arquivos, confirme as alterações com um commit.
- Comitar um arquivo específico:
git commit nome_do_arquivo.txt -m "Mensagem do commit"- Comitar todos os arquivos adicionados:
git commit -m "Mensagem do commit"Caso seja necessário alterar a mensagem do commit mais recente, utilize:
git commit --amendAtenção: Alterar a mensagem de um commit gera um novo commit com um hash diferente. Evite alterar commits que já foram enviados ao repositório remoto.
Para mais detalhes, consulte o Guia do Github
Exibe o histórico de commits:
git logExemplo de saída:
commit 2a3f2b6245**********
Author: Breno Vambáster
Date: Tue Jul 20 09:49:58 2021 -0300
Update README.mdPara uma visualização gráfica e resumida:
git log --graph --oneline --allExibe detalhes de um commit específico, incluindo as alterações realizadas:
git show 2a3f2b6245Mostra as diferenças entre o estado atual dos arquivos e o último commit (ou entre commits/branches):
git diffLista os repositórios remotos configurados:
git remoteO comando git restore é uma ferramenta moderna para desfazer alterações, complementando (e, em alguns casos, substituindo) o uso do git checkout para restaurar arquivos.
Se você alterou um arquivo e deseja descartá-lo, retornando à última versão commitada:
git restore nome_do_arquivo.txtCaso já tenha adicionado um arquivo ao staging area e queira removê-lo:
$ git restore --staged nome_do_arquivo.txtObservação: O git restore ajuda a manter as ações do Git mais intuitivas, separando a restauração de arquivos do ato de trocar de branch, que é feito com git checkout.
Outra forma de descartar alterações (especialmente em arquivos individuais) é usando o comando git checkout:
git checkout -- nome_do_arquivo.txt
Nota: O comando checkout também é utilizado para alternar entre branches. Com o git restore, o Git busca tornar as ações mais claras e específicas.
Utilize git reset para desfazer commits, com duas abordagens principais:
- Modo soft: Remove o commit, mantendo as alterações no Index.
git reset HEAD~1- Modo hard: Remove o commit e descarta as alterações no Working Directory.
git reset --hard HEAD~1Cuidado: O uso de --hard elimina permanentemente as modificações não commitadas.
O merge integra alterações de diferentes branches.
- Crie e mude para uma nova branch (exemplo: feature):
$ git checkout -b feature- Realize os commits na branch feature.
- Retorne à branch principal (geralmente main ou master):
$ git checkout main- Mescle a branch feature na branch main:
$ git merge featureSe houver conflitos, o Git indicará os arquivos afetados para que você os resolva manualmente. Após resolver os conflitos, finalize o merge:
$ git add arquivos_resolvidos
$ git commit -m "Resolvendo conflitos e finalizando merge"De maneira simplificada uma chave SSH é uma maneira de assegurar a segurança entre a conexao entre sua máquina e o repositório do GitHub
- Para verificar se já possui uma chave SSH registrada ou caso queira adicionar uma nova basta ir no seu perfil do github e acessar settings>SSH and GPG keys.
Vamos explicar passo a passo como criar uma nova chave SSH:
9.1 - Inicialmente vamos gerar uma nova chave (Será necessário utilizar o email o qual está vinculado ao GitHub para gerar a chave)
$ ssh-keygen -t ed25519 -C seuemail@mail.comApós ser a execução do comando, perguntará qual local a chave será armazenada, para selecionar o local padrão bastar apertar Enter (Recomendado utilizar padrão)
Logo após aparecerá um campo para criar uma senha ou continuar sem uma senha (Altamente recomendado criar uma senha)
Ao final será gerado duas chaves, uma publica e outra privada e será exibido o Local onde foram salvas (Importate)
Logo após iremos acessar o local onde foi salvo as chaves através do comando:
$ cd "CaminhoAteDiretorio"
ex: $ cd "C:\Users\usuario/.ssh/"Entao iremos acessar o arquivo que contem a chave publica através do comando:
$ cat id_ed25519.pub Irá aparecer a chave gerada, você deverá copiá-la e vincula-la a suas chaves através do seu Perfil no GitHub > settings > SSH and GPG keys > new SSH Key
O Titulo fica a seu critério Ok? ;)
Logo após sera exigido sua senha do GitHub para validação.
Para que sua chave funcione corretamente será necessário que seu computador saiba o que fazer com ela, portanto vamos seguir os seguintes passos:
$ eval $(ssh-agent -s)Ao utilizar esse comando voce esta indicando para o computador iniciar o projeto e executar esse processo em segundo plano.
Logo após sera exibida uma mensagem semelhante a essa "Agent pid 300" (Número gerado aleatoriamente), então digite os seguinte comando, no qual direcionara para o acesso a sua chave privada:
$ ssh-add "caminhoAteChave"
ex: $ ssh-add "C:\Users\usuario/.ssh/id_ed25519"Logo após sera exigido que digite a senha a qual foi criada a chave.
Prontinho sua chave foi gerada com sucesso,ativada e vinculada a sua conta, mas Lembre-se NUNCA DIVULGUE SUA CHAVE PRIVADA!!!
Sempre que você quiser acessar um servidor remoto, basta copiar ou pedir que o administrador copie sua chave pública para ele.
Acesse o link do artigo do GitHub, lá está bem explicado e com passo a passo. Artigo github
Branches permitem desenvolver funcionalidades ou corrigir bugs de forma isolada.
Veja todas as branches locais:
$ git branchCrie uma nova branch sem sair da branch atual:
$ git branch nome-da-branchOu crie e alterne imediatamente:
$ git checkout -b nome-da-branchMude para outra branch:
$ git checkout nome-da-branchRenomeie a branch atual:
$ git branch -m novo-nome-da-branchApós finalizar o trabalho e fazer o merge, remova a branch:
$ git branch -d nome-da-branchPara forçar a exclusão (se não estiver mergeada):
$ git branch -D nome-da-branch- Utilize branches para isolar funcionalidades ou correções.
- Mantenha a branch principal (main ou master) estável.
- Nomeie as branches de forma descritiva (ex.: feature/login, bugfix/header).
Repositórios remotos permitem sincronizar seu trabalho com servidores, como o GitHub.
Clone um repositório remoto para sua máquina:
$ git clone https://github.com/usuario/nome-do-repositorio.gitOu utilizando SSH:
$ git clone git@github.com:usuario/nome-do-repositorio.gitSe você já possui um repositório local e deseja associá-lo a um repositório remoto:
$ git remote add origin https://github.com/usuario/nome-do-repositorio.gitVerifique os repositórios remotos:
$ git remote -vApós os commits, envie as alterações para o repositório remoto:
$ git push origin mainPara uma nova branch:
$ git push -u origin nome-da-branchAtualize seu repositório local com as alterações do remoto:
$ git pull origin mainBusque as alterações do repositório remoto sem mesclá-las imediatamente:
$ git fetchDica: Mantenha seu repositório atualizado para minimizar conflitos.

