Você já deve ter ouvido falar do Git e GitHub, um sistema do controle de versão e um repositório online para os nossos projetos. Agora é a hora de conhecer mais sobre essas ferramentas e aprender a usá-las.
O que é Git?
Git é um sistema de código aberto e gratuito para controle de versão, criado em 2005 por Linus Torvalds enquanto desenvolvia o Kernel do Linux. Controle de versão é um sistema que permite gravar alterações em arquivos ao longo do tempo, portanto, podemos visualizar versões específicas desses arquivos posteriormente.
Geralmente, acontece de termos muitos desenvolvedores trabalhando numa mesma base de códigos, então um sistema de controle de versão como o Git é necessário para diminuir conflitos entre o código de cada desenvolvedor.
O que é GitHub?
Se você vai utilizar Git, é necessário armazenar seu repositório em algum lugar. Existem duas formas de se fazer isso, offline, no seu próprio computador, ou online, em alguma plataforma como GitHub, BitBucket ou GitLab.
É exatamente para isso que o GitHub serve, para armazenar seus repositórios, ele é o “Google Drive dos códigos”.
Configuração do ambiente
Primeiramente, é necessário possuir o Git instalado no seu computador e uma conta no GitHub. Você pode baixar o Git no site oficial, basta selecionar o seu sistema operacional e seguir o guia de instalação.
No Linux, recomenda-se instalar o Git via gerenciador de pacotes, nesse caso, você pode ir até essa página e executar no seu terminal o comando específico da sua distribuição.
Depois de instalar o Git, é necessário configurar o seu nome e e-mail que serão exibidos em seus commits, para isso é só digitar no terminal os comandos abaixo:
|
|
Observação: Caso você esteja no Windows, não se esqueça de utilizar o git bash, pois ele simula um ambiente Unix, facilitando a forma de se trabalhar com Git.
Agora iremos criar uma chave de SSH, com ela provaremos ao GitHub que nós somos os donos da nossa conta. Caso já tenha uma chave SSH, podemos verificar seu diretório .ssh listando o conteúdo:
|
|
Caso o comando ls
retorne algo com a extensão .pub, você não precisa executar o comando ssh-keygen
. Caso contrário, digite esse comando no seu terminal:
|
|
O comando acima irá pedir um nome do arquivo para salvar a chave, não escreva nada e aperte enter (será gerada uma com o nome id_rsa). Depois, informe uma senha (passphrase) e confirme ela. Pronto, você gerou uma chave SSH.
Vamos agora adicionar a chave ao ssh-agent, um programa que fará a autenticação da sua máquina local, com o servidor remoto, que nesse caso seria o GitHub, execute então o comando ssh-agent
:
|
|
A mensagem Agent pid 1234
será exibida.
Executar o comando ssh-add
, onde o id_rsa é o nome da sua chave SSH, informe a passphrase utilizada no comando ssh-keygen
:
|
|
A mensagem Identity added : id_rsa ([email protected])
será exibida.
Adicionando a chave SSH à sua conta no GitHub
Primeiramente, você deve criar uma conta no GitHub.
No diretório ~/.ssh
existem dois arquivos, id_rsa e id_rsa.pub. O com a extensão .pub é a chave pública, ou seja, a chave que você irá informar ao GitHub. O arquivo sem o .pub é a sua chave privada.
Digite o seguinte comando no terminal para exibir o conteúdo da chave gerada:
|
|
Copie todo o conteúdo para a sua área de transferência (lembre-se de copiar desde “ssh-rsa” até o seu e-mail).
Acesse a página de SSH and GPG keys no GitHub para associar a nova chaves SSH a sua conta. Clique então no botão New SSH Key.
O título você pode escolher um (ex: chave [email protected]), e em Key, você informará o conteúdo que copiou anteriormente.
Clique em Add SSH Key para salvar. Pronto, sua configuração está feita.
Fluxo de trabalho 1
Geralmente, o fluxo de trabalho com Git e GitHub é realizando um fork de um determinado repositório de outra pessoa. Dessa forma, vamos criar uma cópia deste repositório no nosso perfil. Após fazer o clone do fork para a nossa máquina local, podemos realizar alterações, e publicar as alterações feitas em seu repositório fork no GitHub. Por fim, poremos criar um pull request do seu fork para o repositório principal (upstream).
Fork
Vamos começar realizando o fork de um repositório base no GitHub. Veja nosso repositório artigo-tutorial-git e clique no botão Fork no canto superior direito. Ao clicar, será feita uma cópia do repositório do Buteco em seu perfil no GitHub.
Agora em seus repositórios você tera uma cópia de artigo-tutorial-git. Lembre-se, você não está no repositório principal, você está no seu, as alterações feitas ali, não terão impacto no principal.
Você deve criar um Pull Request para enviar suas alterações, que é o que iremos ver daqui a pouco.
Git Clone
Vamos clonar o repositório para a sua máquina local para que você possa realizar alterações. Na página do seu repositório no GitHub, existe um botão chamado Code, clique nele, selecione a opção SSH, e depois clique no botão de copiar.
Agora abra o seu terminal no local que deseja baixar o repositório, e execute (use o endereço que você copiou):
|
|
Será pedido para que você informe a sua passphrase de quando criou a sua chave SSH. Após, o clone do repositório você terá uma nova pasta chamada artigo-tutorial-git
.
Entre na nova pasta com o comando:
|
|
Você deverá ter algo similar a imagem abaixo:
Perceba que existe ali, uma pasta chamada .git, é nela que o Git guarda todas as informações do seu repositório, todas as alterações, o endereço do repositório remoto e tudo o que é relacionado ao controle de versão.
No Windows talvez você não consiga visualizar esta pasta pois ela é um arquivo oculto, então é só seguir esse tutorial para alterar as configurações.
Git Status e Git Add
Vamos criar um novo arquivo para que possamos adicionar ele depois, então, crie um arquivo de texto qualquer dentro do diretório do repositório.
|
|
Voltando para o terminal, digite git status
. Você verá essa mensagem:
Untracked files são as alterações pendentes, nós precisamos adicionar elas à área de staging. As alterações que estão no staging são as que serão commitadas futuramente.
Para adicionar apenas um arquivo execute o comando:
|
|
Ou para adicionar todos os arquivos execute o comando:
|
|
O git add
não afeta diretamente o repositório, pois ele ainda não “salvou” as alterações, apenas às moveu para a área de staging, quando executamos git commit
essas as alterações serão salvas.
Agora sim, podemos confirmar as alterações, para isso execute o comando:
|
|
O -m
é para informar uma mensagem que será gravada junto ao commit.
Se você executar o comando git status
novamente, o seu terminal deverá estar parecido com o abaixo.
Agora é hora de subir as alterações feitas no seu repositório local para o seu repositório remoto, nesse caso, o do GitHub.
Git Push
Quando estamos com alguma alteração commitada localmente e queremos subir elas para o repositório remoto, precisamos publicá-las, para isso execute o comando:
|
|
Após, visite a página do seu repositório no GitHub. Você percebera que as alterações feitas localmente, já estão lá, mas atenção, quando você fez o push, as alterações foram para o seu fork, não para o repositório principal.
Criando um Pull request
No seu repositório, após feito um push, você verá um botão escrito Pull request. Clique nele.
Isso irá abrir uma página mostrando os arquivos alterados e um botão Create pull request. Clique nele, informe o título e um comentário para esse pull request e clique no botão Create pull request.
Pronto, seu PR foi criado com sucesso.
Se você for até a página de pull requests do repositório principal, o seu PR estara lá. Agora, para a sua alteração entrar de fato no repositório principal, o se pull request deve ser aceito por algum mantedor do repositório. Esse processo de aceitar um pull request é chamado de merge.
O que é Pull Request?
Desde o começo desse artigo, tudo girou em torno deste momento, em que você cria o seu pull request, mas afinal, o que é um pull request?
Para entendermos o que é um pull request precisamos entender o que é um pull. Quando existe alguma alteração no repositório remoto, e você quer baixar essa alteração para o seu repositório local, ou seja, o seu repositório local está atrasado em relação ao remoto, você digita git pull
no terminal (olha só, mais um comando novo). Um pull request é uma sugestão de uma alteração, ou seja, você está pedindo para que aquele repositório que você enviou o pull request faça um pull com as suas alterações.
Fluxo de trabalho 2
Como dito anteriormente, vamos ver outra maneira de se utilizar o Git e GitHub.
Desta vez, vamos começar com o comando git init
para criar o nosso repositório localmente, depois iremos conectar ele ao GitHub e enviar os nossos commits.
Git Init
Crie uma pasta em qualquer lugar do seu computador e navegue até ela com o seu terminal. Digite então dentro dela, o comando:
|
|
Você perceberá que foi criado uma pasta .git, que mapeia as alterações e commits do repositório como mencionado anteriormente.
Realize agora alguma alteração. Crie um arquivo de texto, por exemplo. Depois, execute o comando git add
que foi falado anteriormente e git commit -m
, agora você já está craque nisso.
Feito isso, é hora de subirmos essas alterações para o repositório remoto (que ainda não foi criado).
Precisamos criar um repositório no GitHub. Nesta página informe algumas informações sobre o repositório, como o nome, descrição, e clique em Create repository.
Pronto, um novo repositório foi criado.
Vinculando o repositório local, ao remoto
Veja que existem ali três opções:
…or create a new repository on the command line
…or push an existing repository from the command line
…or import code from another repository
A primeira opção, é para criar um repositório local, vincular ele ao GitHub, e fazer um push das alterações. A segunda é para apenas conectar um repositório local já existente, e fazer um push dele. E a terceira, é para importar o código de algum repositório que esteja utilizando um sistema de versionamento de código diferente do Git.
Nós já temos o nosso repositório criado, queremos apenas subir ele ao GitHub, portanto, vamos realizar os passos da segunda opção.
Com o seu terminal aberto na pasta do seu repositório local, execute então os seguintes comandos:
|
|
Esse comando define para onde enviaremos nossos commits, nesse caso o GitHub.
|
|
Esse comando cria uma branch com o nome main
, padrão do GitHub.
|
|
Esse comando envia as alterações commitadas ao seu repositório remoto no GitHub.
Pronto, se você for até a página do seu repositório no GitHub as alterações já estarão lá.
O fim, se existe, está muito distante ainda
Se você chegou até aqui, então aprendeu bastante coisa.
Você aprendeu como fazer um fork de um repositório no GitHub, como clonar ele para a sua máquina local com git clone
, adicionar as suas alterações a ele com git add
, commitar elas com git commit
, subir as suas alterações ao repositório remoto com git push
e como abrir um pull request
com as alterações.
Mas não acabou por aí, o próximo passo é estudar sobre branches, entendendo como elas funcionam e são usadas. E claro, contribuir com software livre.
E ai, você já usou Git ou Github antes? O que achou? Deixe um comentário abaixo.