Git
Git
Esse é um guia de utilização do Git, que é uma ferramenta de controle de versionamento que utilizamos nos repositórios do GitHub. É para ser algo simples e cobrir os casos de uso mais comuns.
Se você quiser a documentação completa do Git, com todas as features e funcionamento explicados, então dirija-se para o book oficial: PT-BR / EN
Instalação
Aqui tem alguns guias de instalação dependendo da plataforma. Não é um bicho de 7 cabeças, mas já coloquei aqui porque tem alguns links importantes.
Caso queira ver na documentação original: PT-BR EN
🪟 Windows
Se você utiliza algum package-manager, como Chocolatey ou Scoop, instale por eles. Caso o contrário, faça a instalação manual seguindo o tutorial.
Baixe o arquivo aqui
Execute
Next, next, next
Instalado 👍
🐧 Linux
❗ Muito provavelmente você já tem o git instalado, faça o teste e veja também se ele está atualizado. Caso não esteja instalado, baixe pelo package manager do seu sistema, irei listar alguns.
Debian-based (Ubuntu, Debian, Mint, Kali)
RPM-based (Fedora, CentOS, RedHat OS, etc)
Arch-based
Outras fontes estão aqui: https://git-scm.com/downloads/linux
🍎 MacOS
Rode o comando git --version
no terminal. Se não tiver instalado irá aparecer um prompt para instala-lo.
Identidade
Agora temos que configurar sua identidade, que ficará ligada a todos os commits que fizer. Vamos configurar o nome e email globalmente para não precisar ficar colocando em cada repositório ou sessão:
🕵️ PrivacidadeCaso não queira expor o seu endereço de email pessoal, que ficará em cada commit, você pode utilizar o email de no-reply linkado a sua conta do GitHub. Para isso vá em Settings > Emails e ative a opção Keep my email addresses private, lá terá o seu email privado "id+username@users.noreply.github.com"
Autenticação
Agora vamos configurar a parte de autenticação. Iremos utilizar ssh e faremos a configuração no GitHub. A chave ssh também pode ser usada para assinar commits.
Gerar chave SSH
Primeiro vamos gerar nossa chave ssh. Você pode verificar se já tem uma gerada no diretório .ssh
na home do seu usuário:
⚠️ O diretório
.ssh
é um diretório oculto por padrão (devido a iniciar com.
), então caso queira acessar usando um file manager (Windows Explorer, Nemo, Thunar, Dolphin, etc), você precisa ativar a visualização de arquivos/diretórios ocultos.
Para gerar uma nova chave ssh, abra um terminal e utilize o comando:
❗ Esse pode ser o seu email pessoal da conta do GitHub
Ao aparecer essa pergunta, aperte enter. Se você quiser mudar o nome, lembre-se que terá que passar o caminho absoluto ou relativo ao diretório atual para a pasta .ssh
do seu usuário.
Você também pode configurar uma senha, que é opcional e se não quiser usar é só apertar enter.
Ele irá gerar dois arquivos:
Adicionando chave SSH na conta do GitHub
Para adicionar a chave SSH, primeiro copie a sua chave pública (
id_ed25519.pub
).Entre no GitHub e logue com a sua conta
Clique na sua foto de perfil e vá em Settings. (Ou vá em https://github.com/settings/ssh/new e pule para o passo 6)
Dentro da aba Access selecione SSH and GPG keys
Clique em New SSH key
Adicione o nome que desejar e cole o conteúdo da chave pública na parte de key
Clique em Add SSH key
Testando autenticação SSH
Para testar a autenticação, abra um terminal e digite
Provavelmente aparecerá um aviso dessa maneira
Confirme se a fingerprint é a mesma do GitHub aqui. Se for, digite yes
e clique enter.
A seguinte mensagem deve aparecer
Clonar repositórios
Agora sempre que for clonar repositórios, opte pelo clone via SSH
Comandos Git
Essa seção é destinada para os comandos mais utilizado
git init [<directory>]
https://git-scm.com/docs/git-init
Comando utilizado para inicializar um repositório git no diretório atual ou no diretório especificado.
-b <branch_name> --initial-branch=<branch-name>
Inicializa o repositório com a branch especificada. Caso contrário, utiliza o nome configurado em init.defaultBranch
git status
https://git-scm.com/docs/git-status
Mostra os estados dos arquivos dentro do repositório local em relação ao HEAD e staging atual.
-s --short
Saída em um formato mais resumido
-v --verbose
Saída mais verbosa, mostra mais status
git add [<pathspec>...]
https://git-scm.com/docs/git-add
Comando para adicionar mudanças ao index atual. O index se refere a área de "staging" temporária antes das mudanças serem aplicadas (commit). Você pode utilizar o comando git status
para ver as alterações pendentes e em "staging".
Você pode utilizar globs (*
) para adicionar múltiplos arquivos, como se fosse um autocomplete. Exemplo: git add *.c
adiciona todos os arquivos com a extensão .c
.
-v --verbose
Saída mais verbosa, mostra mais status
-i --iteractive
git commit
https://git-scm.com/docs/git-commit
Cria um novo commit contendo os arquivos em stage.
-m --message=
Adiciona mensagem de commit
-v --verbose
Saída mais verbosa, mostra mais status
Exemplos
git remote
https://git-scm.com/docs/git-remote
Utilizado para gerenciar os repositórios remotos, como o GitHub. Sem nenhum argumento faz a lista das URLs. Temos vários subcomandos
git remote add <name> <url>
Adiciona um repositório remoto
git remote rename <old> <new>
Renomeia um repositório remoto de nome <old> para <new>
git remote remove/rm <name>
Remove um repositório remoto com nome <name>
git remote get-url <name>
Retorna a URL de um repositório remoto
git remote set-url <name> <url>
Modifica a URL de um nome de repositório remoto
git branch
https://git-scm.com/docs/git-branch
Comando relacionado com as branches do repositório. Quando usado sem nenhum argumento, mostra as branches locais e marca a branch atual.
-v --verbose
Saída mais verbosa, mostra mais status
-d <branch> --delete <branch>
Deleta localmente a branch especificada
-D
É um atalho para --delete --force. Utilizando para quando só o -d não funciona.
-m --move
Utilizado para renomear uma branch
-r --remotes
Lista as branches do repositório remoto
-a --all
Lista as branches locais e do repositório remoto
git checkout
https://git-scm.com/docs/git-checkout
Atualiza os arquivos de acordo com o index (commit) ou árvore (branch). "Troca de branches"
-f --force
Força a troca, mesmo se houverem arquivos modificados
-b
Cria uma nova branch
-B
Cria uma nova branch. Se ela já existir, será sobrescrita
Exemplos
git pull
https://git-scm.com/docs/git-pull
Incorpora mudanças de um repositório remoto na branch atual.
-v --verbose
Saída mais verbosa, mostra mais status
-f --force
Força a atualização, mesmo se houverem arquivos modificados
--set-upstream
Adiciona uma branch padrão para futuros pulls em uma branch remota
git push <remote> <branch>
https://git-scm.com/docs/git-push
Atualiza o repositório remoto com as mudanças locais.
-v --verbose
Saída mais verbosa, mostra mais status
-f --force
Força a atualização, mesmo se houverem arquivos modificados
--set-upstream
Adiciona uma branch padrão para futuros pushs em uma branch remota
Exemplos
Recursos
Atualizado