O Git é um sistema de controle de versão distribuído essencial para o desenvolvimento de software moderno, e o GitHub serve como uma plataforma de hospedagem de repositórios Git, facilitando a colaboração e o gerenciamento de projetos. Este guia detalha os passos para configurar o Git, criar um repositório no GitHub e, subsequentemente, enviar o código do seu projeto para a plataforma.
Criação de Repositórios no GitHub
Para começar a utilizar o GitHub, o primeiro passo é criar uma conta na plataforma. Após o registro, você poderá criar seu primeiro repositório:
- Acesse github.com e faça login.
- No canto superior direito da página, clique no ícone '+' e selecione "New repository".
- Preencha o nome do seu repositório (ex:
meu-novo-projeto), adicione uma descrição opcional e escolha entre público ou privado. - Clique em "Create repository" para finalizar.
Após a criação, o GitHub fornecerá algumas instruções iniciais para vincular seu repositório local.
Instalação do Cliente Git
Para interagir com o GitHub a partir do seu computador, é necessário ter o cliente Git instalado. O Git está disponível para diversos sistemas operacionais:
- Windows: Baixe o instalador em git-scm.com/download/win. Siga as instruções do instalador.
- macOS: O Git pode ser instalado via Homebrew (
brew install git) ou através das ferramentas de linha de comando Xcode. - Linux: Utilize o gerenciador de pacotes da sua distribuição (ex:
sudo apt install gitpara Debian/Ubuntu,sudo dnf install gitpara Fedora).
Após a instalação, você deve ter acesso a ferramentas como Git Bash (Windows) ou o terminal para comandos Git.
Configuração Local do Git e Chave SSH
Antes de enviar seu código, algumas configurações são necessárias no seu ambiente Git local:
1. Inicializar um Repositório Local
Navegue até o diretório do seu projeto no terminal ou Git Bash e inicialize um novo repositório Git local:
git init
Este comando cria um subdiretório .git que contém todos os arquivos necessários para o controle de versão.
2. Gerar e Adicionar Chave SSH ao GitHub
A autenticação via SSH oferece uma forma segura de se conectar ao GitHub sem a necessidade de digitar suas credenciais repetidamente. Para gerar uma chave SSH:
ssh-keygen -t rsa -C "seu.email@exemplo.com"
Substitua "seu.email@exemplo.com" pelo email associado à sua conta GitHub. Pressione Enter para aceitar o local padrão de salvamento e, opcionalmente, defina uma senha (passphrase) para sua chave. Após a geração, copie o conteúdo da sua chave pública (geralmente ~/.ssh/id_rsa.pub):
cat ~/.ssh/id_rsa.pub
Em seguida, adicione esta chave ao GitHub:
- No GitHub, clique na sua foto de perfil (canto superior direito) e vá em "Settings".
- No menu lateral esquerdo, selecione "SSH and GPG keys".
- Clique em "New SSH key" ou "Add SSH key".
- Dê um título descritivo à sua chave e cole o conteúdo copiado no campo "Key".
- Clique em "Add SSH key".
Para verificar se a conexão SSH foi estabelecida com sucesso:
ssh -T git@github.com
Se você receber uma mensagem como "You've successful authenticated...", a conexão está funcionando.
3. Configurar Nome de Usuário e E-mail Globalmente
O Git registra o autor de cada commit. Configure seu nome e e-mail:
git config --global user.name "Seu Nome"
git config --global user.email "seu.email@exemplo.com"
4. Vincular Repositório Local ao Remoto
Adicione o repositório GitHub como um "remote" (remoto) ao seu repositório local. O nome padrão para o remote é origem:
git remote add origem git@github.com:seuUsuario/seuRepositorio.git
Substitua seuUsuario pelo seu nome de usuário GitHub e seuRepositorio pelo nome do repositório que você criou no GitHub.
Adicionar, Comitar e Enviar Alterações
Com o Git configurado e o repositório remoto adicionado, você pode começar a gerenciar e anviar seu código:
1. Preparar Arquivos para Commit
Após fazer alterações nos arquivos do seu projeto, use git add para adicioná-los à "stage" (área de preparação) para o próximo commmit. Por exemplo, para adicionar um arquivo projeto.py:
git add projeto.py
Para adicionar todos os arquivos modificados e novos:
git add .
2. Registrar Alterações (Commit)
Após adicionar os arquivos à stage, "comite" (registre) as alterações com uma mensagem descritiva:
git commit -m "Adiciona a funcionalidade inicial do projeto"
3. Enviar para o GitHub (Push)
Para enviar seus commits locais para o repositório remoto no GitHub:
git push -u origem principal
O argumento -u origem principal (ou -u origin master, dependendo do nome do seu branch principal) é usado na primeira vez para definir o branch local como "tracking" do branch remoto. Para pushes subsequentes, basta:
git push
É uma boa prática sempre executar git pull antes de git push para garantir que você tenha as últimas alterações do repositório remoto, evitando conflitos.
Ignorando Arquivos com .gitignore
Muitos projetos geram arquivos temporários, logs, módulos de dependência ou arquivos de configuração específicos do ambiente que não devem ser versionados. O arquivo .gitignore permite especificar padrões de nomes de arquivos e diretórios que o Git deve ignorar. Crie um arquivo chamado .gitignore na raiz do seu repositório e adicione os padrões, por exemplo:
# Arquivos temporários
*.tmp
*.log
# Diretórios de dependências
node_modules/
vendor/
# Variáveis de ambiente
.env
# Arquivos de compilação
build/
dist/
Comandos Essenciais do Git
Abaixo, uma referência rápida a alguns comandos Git comuns para gerenciar seu projeto:
Gerenciamento de Arquivos e Commits
git status: Exibe o estado dos arquivos no diretório de trabalho e na área de preparação.git add <arquivo>: Adiciona um arquivo à área de preparação.git add .: Adiciona todos os arquivos modificados e novos à área de preparação.git commit -m "Mensagem": Registra as alterações na história do repositório.git restore <arquivo>: Descarta as alterações no diretório de trabalho de um arquivo (Git 2.23+). Para versões antigas, usegit checkout -- <arquivo>.git restore --staged <arquivo>: Remove um arquivo da área de preparação sem descartar as alterações no diretório de trabalho.git rm <arquivo>: Remove um arquivo do diretório de trabalho e da área de preparação.git rm --cached <arquivo>: Remove um arquivo do controle de versão, mas o mantém no diretório de trabalho.git revert <commit_id>: Cria um novo commit que desfaz as alterações de um commit anterior.git reset --hard <commit_id>: Redefine o branch atual para um commit específico, descartando todas as alterações subsequentes (cuidado, pois é destrutivo).
Visualização de Diferenças (Diff)
git diff: Mostra as diferenças entre o diretório de trabalho e a área de preparação.git diff --staged: Mostra as diferenças entre a área de preparação e o último commit.git diff <commit1_id> <commit2_id>: Compara as diferenças entre dois commits.
Histórico de Commits
git log: Exibe o histórico de commits.git log --oneline: Exibe o histórico de commits de forma concisa.git log -p <arquivo>: Mostra o histórico de commits e as mudanças detalhadas para um arquivo específico.
Gerenciamento de Branches
git branch: Lista todos os branches locais.git branch <novo_branch>: Cria um novo branch.git checkout <branch>: Muda para um branch existente.git checkout -b <novo_branch>: Cria e muda para um novo branch.git merge <branch_a_mesclar>: Mescla as alterações de outro branch no branch atual.git branch -d <branch>: Exclui um branch local (após ser mesclado).git branch -D <branch>: Exclui um branch local à força (mesmo que não mesclado).
Gerenciamento de Stash (Área de Armazenamento Temporário)
git stash: Salva temporariamente as alterações não comitadas do diretório de trabalho e da área de preparação.git stash list: Lista todos os stashes armazenados.git stash apply: Aplica o stash mais recente sem removê-lo da lista.git stash pop: Aplica o stash mais recente e o remove da lista.git stash drop: Remove um stash específico da lista.
Interação com Repositórios Remotos
git remote -v: Lista os repositórios remotos configurados.git fetch <remote_name>: Baixa as alterações de um repositório remoto sem mesclá-las no branch local.git pull <remote_name> <branch_name>: Baixa e mescla as alterações de um repositório remoto.git push <remote_name> <branch_name>: Envia os commits locais para o repositório remoto.git clone <url_do_repositorio>: Clona um repositório remoto para o seu computador local.