Git e GitHub - Instalação, Configuração e Primeiros Passos
Git e GitHub são ferramentas complementares: o Git é um sistema de controle de versões distribuído, enquanto o GitHub é uma plataforma que usa o Git como base para versionar e compartilhar código. Neste guia, você instala o Git, configura sua identidade, cria um repositório e executa os primeiros comandos do dia a dia.
Requisitos para começar com Git e GitHub
Para acompanhar este artigo, você precisa de pouca coisa. Basta um computador com Windows, Mac ou Linux e um editor de código.
Neste guia, usamos o Visual Studio Code como editor. Caso ainda não tenha instalado, siga o artigo sobre instalação e customização do Visual Studio Code.
O que é versionamento de código
Quando dizemos que estamos versionando algo, estamos criando algo novo ou alterando algo que já existe. Isso acontece o tempo todo no desenvolvimento de software.
Temos Android 10, Windows 10, macOS 13 e por aí vai, porque cada software tem a sua versão, com novidades e particularidades. Porém, quando versionamos o código, ganhamos também a gestão de mudanças e a possibilidade de voltar no tempo.
Imagine que você começou uma nova funcionalidade e, depois de algumas horas e muitas linhas de código, desistiu da abordagem. Como desfazer tudo?
Ou pior, imagine que a nova versão do sistema tem um defeito crítico e você precisa voltar para a versão anterior. Nesse caso, o versionamento resolve o problema.
Versionar o código é como tirar "fotografias" dele para voltar àquele momento depois. Portanto, tirar uma foto a cada mudança é melhor do que tirar uma única foto no fim do dia.
O que é o Git
O Git é um sistema de controle de versão criado por Linus Torvalds, o criador do Linux, em 2005. Ele nasceu durante o desenvolvimento do próprio kernel do Linux.
Embora existam outros sistemas, como o SVN, o Git ganhou muita popularidade. Assim, ele assumiu o papel de principal sistema de controle de versão do mercado.
Hoje, plataformas como GitHub, GitLab e Azure DevOps abstraem o Git e facilitam o uso no dia a dia. Por isso, você não precisa dominar o funcionamento interno logo no início.
O mais importante agora é aprender os conceitos e usar uma dessas plataformas. Depois, se quiser ir fundo, o artigo Git por dentro do encanamento mostra como ele funciona por baixo dos panos.
O que é o GitHub
O GitHub é a plataforma que nos dá acesso ao Git para armazenar código com todo o poder do versionamento. Além disso, ela reúne recursos de colaboração, revisão de código e automação.
O GitHub é gratuito para a maioria dos serviços, incluindo tudo o que usamos neste artigo. Em 2018, a Microsoft comprou a plataforma, que passou a oferecer ainda mais recursos gratuitos para profissionais e estudantes.
Git e GitHub como seu portfólio
O GitHub também funciona como portfólio dos desenvolvedores, afinal é nele que fica o código que produzimos. Por isso, dominar Git e GitHub ajuda tanto no trabalho quanto na busca por emprego.
Durante um processo seletivo, é comum alguém pedir a URL do seu perfil no GitHub. Assim, a empresa analisa o seu código e as suas atividades.
Por isso, mantenha a conta ativa, publicando projetos e testes com frequência, e use e abuse do GitHub. Também escolha um bom nome de usuário, que remeta à sua identidade profissional, e evite apelidos que possam soar ofensivos.
Criando sua conta no GitHub
Para começar, você só precisa de uma conta na plataforma. O cadastro acontece no site oficial do GitHub, sem custo algum.
Se tudo der certo, você recebe um e-mail para confirmar a conta. Não esqueça dessa ativação, porque ela é importante para liberar a conta.
Instalação do Git
Embora seja possível fazer quase tudo pela interface visual do GitHub, é muito comum usar a interface de linha de comando, a CLI. Além disso, a CLI do Git é completa e funciona com GitHub, GitLab e outras plataformas.
Para instalar, acesse a página oficial do Git e baixe o instalador para Windows ou Mac. No Mac, a documentação da Microsoft também sugere o Homebrew, com o comando brew install git.
Caso use Linux, rode os comandos abaixo no terminal, conforme a sua distribuição.
# Debian e Ubuntu
sudo apt update
sudo apt upgrade
sudo apt install git
# Red Hat
sudo yum upgrade
sudo yum install git
Em seguida, abra um novo terminal e execute o comando abaixo para verificar a instalação.
git --version
Se tudo funcionar, você verá a versão instalada do Git. Com isso, o comando git fica disponível para os próximos passos.
Configurando sua identidade no Git e GitHub
O próximo passo é configurar a sua identidade para trabalhar com Git e GitHub. Para isso, usamos o comando git config, informando nome e e-mail.
Como essas configurações valem para todos os repositórios da máquina, adicionamos a opção --global. Depois dela, vêm o nome da configuração e o valor entre aspas.
git config --global user.name "Andre Baltieri"
git config --global user.email "myemail@example.com"
Depois desses dois comandos, o Git guarda seu nome e e-mail e os adiciona a cada alteração que você registrar. Se quiser outra identidade em um repositório específico, rode os mesmos comandos sem o --global dentro da pasta dele.
Quem usa mais de uma conta, como uma pessoal e outra da empresa, encontra um passo a passo no artigo sobre mais de uma configuração do Git em um único computador.
Criando um repositório no GitHub
Agora começa a parte legal, porque vamos criar o primeiro repositório no GitHub. Repositório é o nome que damos ao "projeto" no GitHub e em outras ferramentas de versionamento.
Preencha o campo Repository name com um nome sem espaços nem caracteres especiais, como my-first-repo. Já o campo de descrição é opcional.
Deixe a opção Public marcada e clique em Create repository. Assim, o repositório fica visível para o mundo, e qualquer pessoa que acessar sua página verá o código.
Cuidado para não enviar informações sensíveis, como a senha do banco de dados, para repositórios públicos. Isso pode causar problemas sérios.
Você também pode criar repositórios privados, que só você e as pessoas que você definir conseguem acessar. Quando este artigo foi escrito, eles eram limitados, mas hoje o plano gratuito oferece repositórios privados ilimitados, com menos recursos que os públicos.
O repositório fica disponível no endereço https://github.com/USER/REPOSITORY. No nosso caso, o endereço é https://github.com/USER/my-first-repo.
Por enquanto, isso é tudo no GitHub. Então, vamos para a máquina local iniciar a integração.
Iniciando um repositório local com Git e GitHub
Para começar a praticar Git e GitHub, crie uma pasta em um local seguro. Para isso, abra o terminal de sua preferência e execute os comandos abaixo.
mkdir my-repo
cd my-repo
code .
Esses comandos criam a pasta my-repo e abrem a pasta no Visual Studio Code. Caso o comando code não funcione, abra o VS Code, vá em File, depois em Open Folder, e selecione a pasta.
Com o VS Code aberto, crie um arquivo chamado README.md na raiz. Por padrão, todo repositório no GitHub procura esse arquivo na raiz para exibi-lo na página inicial.
Os arquivos .md usam o formato Markdown, uma linguagem de marcação parecida com o HTML. Então, abra o README.md e coloque o conteúdo abaixo.
My First Repository
===================
Git and GitHub are cool!
Até aqui, temos o repositório no GitHub e uma pasta local, mas eles ainda não se conectam.
Na verdade, a pasta local nem virou repositório ainda. Para isso, usamos o comando init, que cria uma pasta oculta .git com tudo o que o Git precisa para versionar o projeto.
Não mexa nessa pasta, porque o Git a gerencia sozinho. Agora, pressione Ctrl + crase (ou Cmd + crase no Mac) para abrir o terminal do VS Code, ou use o menu Terminal e depois New Terminal.
git init
Se tudo der certo, você verá a mensagem "Initialized empty Git repository" seguida do caminho da pasta. Lembre que esses comandos também funcionam em qualquer terminal fora do VS Code.
Adicionando itens
Antes de enviar os arquivos ao servidor, precisamos dizer ao Git quais arquivos queremos versionar. Em projetos grandes, nem todo arquivo deve ir para o repositório, por isso existe o comando add.
Desta forma, adicione o README.md com o comando abaixo.
git add README.md
Quando houver muitos arquivos e você quiser adicionar todos de uma vez, use a opção --all.
git add --all
Com isso, o Git passa a acompanhar esses arquivos, que seguem para o servidor no próximo envio.
Fazendo commit
Você provavelmente já ouviu frases como "vou comitar" ou "comita aí". O termo commit significa comprometer, e é exatamente isso que fazemos com as mudanças no código.
Quando executamos um commit, registramos as mudanças e as preparamos para as outras pessoas do projeto. Contudo, comitar não envia nada ao GitHub, porque o commit ainda fica apenas na sua máquina.
Por isso, evite acumular muitos commits locais sem enviá-los ao servidor. Da mesma forma, não fique muito tempo sem buscar as novidades do servidor.
O ideal é trabalhar em um pedaço pequeno do software, resolver o problema, comitar e enviar. Em seguida, baixe a versão mais nova para não ficar desatualizado.
Mensagens de commit
Embora alguns lugares aceitem commits sem descrição, o ideal é sempre informar o que mudou. Não precisa escrever um textão, mas evite algo genérico como "ajustes gerais".
A mensagem vai no parâmetro -m, seguido do texto entre aspas. Assim, o primeiro commit fica desta forma.
git commit -m "Add README.md file"
Neste momento, tudo está pronto localmente. Agora, falta conectar o repositório local ao remoto.
Ligando os repositórios do Git e GitHub
Até aqui, temos dois repositórios do Git e GitHub separados: o local, my-repo, e o remoto, my-first-repo. Inclusive, eles têm nomes diferentes, e isso não é problema.
Para ligar os dois, usamos o comando remote add origin, seguido da URL do repositório. O nome origin é o padrão para o repositório remoto principal.
git remote add origin https://github.com/USER/my-first-repo.git
Pronto, agora o repositório local sabe para onde enviar as informações.
Branches
Antes do comando de envio, precisamos entender o conceito de branch. Branches são ramificações do código, onde copiamos uma versão e trabalhamos sobre ela sem afetar a versão principal.
Todo repositório já nasce com uma branch principal. Neste artigo, usamos o nome master, que o Git cria por padrão com git init.
Desde outubro de 2020, porém, o GitHub usa main como nome padrão nos repositórios criados pela plataforma. Então, se a sua branch se chamar main, basta trocar o nome nos comandos.
Agora, imagine que a equipe vai criar uma funcionalidade de venda com cartão de crédito. Essa mudança mexe em muitas partes do sistema e vai levar meses.
Por algum motivo, o desenvolvimento começou direto na branch principal. Um mês depois, muita coisa mudou, e então aparece um bug que exige correção urgente.
Como o pagamento com cartão ainda não está pronto, as telas estão bagunçadas e cheias de links de teste. Assim, você precisa corrigir o bug, mas não pode publicar o código atual.
Por isso, é comum ter várias branches em um projeto, e a mais comum separa o que está em desenvolvimento do que já está pronto.
Em suma, evite desenvolver direto na branch principal. Crie uma branch de desenvolvimento e, quando tudo estiver pronto, junte as duas.
Enviando arquivos do Git para o GitHub
Agora que entendemos branches, vamos enviar os arquivos do Git para o GitHub. O envio usa sempre o comando push, e precisamos indicar a branch.
Como estamos na branch master, usamos o comando abaixo. A opção -u faz o Git lembrar dessa ligação, então nos próximos envios basta digitar git push.
git push -u origin master
No primeiro envio, o Git pode pedir suas credenciais do GitHub. Vale saber que a autenticação por senha deixou de funcionar, então use um token de acesso pessoal ou um gerenciador de credenciais, conforme a documentação do GitHub sobre repositórios remotos.
Depois do envio, acesse https://github.com/USER/my-first-repo para ver o resultado.
Atualizando os arquivos locais
Em inglês, push significa empurrar e pull significa puxar. Cuidado, porque os nomes parecidos costumam confundir quem está começando.
Para enviar arquivos, usamos git push, como vimos acima. Logo, para obter atualizações do servidor, usamos git pull.
Dificilmente você trabalhará sozinho, então baixe as atualizações com frequência. Mas termine a sua parte antes, para que as novidades não atrapalhem o que está em andamento.
Para testar, edite o README.md direto no GitHub, pelo endereço https://github.com/USER/my-first-repo/edit/master/README.md. Em seguida, coloque o conteúdo abaixo.
My First Repository
===================
Git and GitHub are cool!
Now I am up to date
Preencha a mensagem do commit com "Update from GitHub" e clique em Commit changes. A versão nova aparece na tela, diferente da que está no VS Code.
Agora, feche o README.md no VS Code e execute o comando abaixo no terminal.
git pull
Abra o arquivo de novo e confira que a versão do servidor chegou à sua máquina.
Integração do Git e GitHub com o VS Code
Embora a nossa sugestão seja aprender os comandos, o VS Code integra muito bem Git e GitHub. Assim, você consegue fazer push e pull sem sair do editor.
Pressione Ctrl + Shift + G (ou Cmd + Shift + G no Mac) para abrir a tela de controle de código. Nela, você vê as alterações, faz commits e envia ou recebe arquivos.
Clonando um repositório
Até agora, criamos um repositório local do zero. Porém, também podemos trazer um repositório existente para a máquina com o comando git clone.
Imagine que você entrou em uma equipe e o repositório my-first-repo já está em andamento. Nesse caso, em vez de git init, você usa o clone.
Para testar, feche o VS Code e exclua a pasta my-repo. Depois, abra um terminal, navegue até uma pasta segura e execute o comando abaixo.
git clone https://github.com/USER/my-first-repo.git
Sempre que quiser clonar, siga o padrão git clone https://github.com/USER/REPOSITORY.git, com o .git no final. Pronto, o repositório local voltou, e você já pode usar push e pull nele.
Próximos passos com Git e GitHub
Esses foram seus primeiros passos com Git e GitHub. Você instalou o Git, configurou sua identidade, criou repositórios, fez commits e sincronizou arquivos.
Daqui em diante, vale explorar os recursos de colaboração da plataforma. Por exemplo, o artigo sobre gestão de projetos com GitHub mostra como organizar tarefas no GitHub Projects.
Também vale conhecer a hospedagem gratuita com GitHub para publicar seus primeiros sites. Para aprofundar o versionamento, o curso gratuito Fundamentos do Git e Azure DevOps é um ótimo complemento.
FAQ
Qual a diferença entre Git e GitHub?
O Git é o sistema de controle de versão que roda na sua máquina. Já o GitHub é uma plataforma online que hospeda repositórios Git e adiciona recursos de colaboração.
Preciso pagar para usar o GitHub?
Não, o plano gratuito inclui repositórios públicos e privados ilimitados. Os repositórios privados, porém, têm menos recursos no plano gratuito.
O commit envia o código para o GitHub?
Não, o commit registra as mudanças apenas no repositório local. Para enviar ao GitHub, você precisa executar o git push.
Devo usar master ou main?
O GitHub usa main como padrão nos repositórios criados pela plataforma. O importante é usar nos comandos o mesmo nome da branch que existe no seu repositório.
Posso usar minha senha do GitHub no git push?
Não, a autenticação por senha no Git foi descontinuada pelo GitHub. Use um token de acesso pessoal, um gerenciador de credenciais ou SSH.