GitHub

Amplamente utilizado por programadores para divulgar seus trabalhos, com a possibilidade de contribuições de outros programadores, o GitHub é uma plataforma de hospedagem de código-fonte com controle de versão. Esse controle é feito pelo sistema Git, que foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos. Cada diretório de trabalho do Git é um repositório (local de armazenamento dos códigos) com um histórico completo e habilidade total de acompanhamento das versões/revisões.

Após fazer sua conta no site do GitHub, é oferecido um tutorial muito bom para começar a trabalhar com esse sistema. Ele é chamado de Hello World, um nome tradicional dado aos programas simples voltados aos iniciantes em uma linguagem de programação. Abra uma nova aba e siga o tutorial para:

1. Criar e usar um repositório (“repository”)

Um repositório geralmente é usado para organizar um único projeto; podem conter pastas e arquivos (textos, imagens, vídeos, planilhas, conjuntos de dados, etc)

2. Começar e gerenciar um novo ramo (“branch”)

“Branching” é o modo de trabalhar em diferentes versões de um repositório ao mesmo tempo. Por padrão, seu repositório possui um ramo chamado “master” (mestre), que é considerado o ramo definitivo. Quando você cria uma ramificação, você está fazendo uma cópia do “master” como era nesse momento – como se você criasse um código “teste_v1.sh” copiando o arquivo original “teste.sh”.

3. Fazer alterações em um arquivo e enviando-o para o GitHub como uma confirmação (“commit”)

As mudanças salvas são chamadas de commits (confirmações). Um commit em um repositório git registra uma fotografia (snapshot) de todos os arquivos no seu diretório. O Git tem por objetivo manter os commits tão leves quanto possível, de forma que ele não copia cegamente o diretório completo toda vez que você “commita”. Ele pode (quando possível) comprimir um commit como um conjunto de mudanças (ou um “delta”) entre uma versão do seu repositório e a seguinte.

Cada commit tem uma mensagem de confirmação associada, que é uma descrição explicando a mudança, para que outros contribuidores possam entender o que você fez e por quê. O Git também mantém um histórico de quando ocorreu cada commit. No post How to Write a Git Commit Message existem muitas dicas de como escrever boas mensagens de commit – curtas e completas.

4. Abrir e combinar um pedido de manejo do código (“pull request”)

Ao abrir um “pull request”, você está propondo suas mudanças e solicitando que alguém analise e extraia sua contribuição, juntando-as em seu ramo principal (nesse exemplo, você está solicitando para você mesmo). Os pedidos de envio mostram “diffs” (diferenças) do conteúdo de ambos os ramos – adições e subtrações são mostradas em verde e vermelho, respectivamente. Ao usar o sistema “@mention” do GitHub na sua mensagem de solicitação, você pode solicitar comentários de pessoas ou equipes específicas.

5. Mesclar seu “pull request” (“merge”)

Unir modificações feitas no ramo trabalhado com o ramo principal (“master”).

Nesse tutorial, é utilizado o arquivo README.md, voltado para descrever o repositório. As extensões .md e .markdown são arquivos de texto escritos na sintaxe Markdown, uma linguagem de marcação que converte o texto em XHTML válido (clique no link para ver algumas formatações básicas). Se você tiver um Readme.md no seu repositório, o GitHub mostrará o conteúdo na página inicial dele.

Aqui vai o exemplo de um perfil de um usuário do GitHub, de onde é possível acessar o(s) repositório(s) criados e mantidos por ele.

Gists

Um serviço oferecido pelo GitHub é o Gists: um conjunto de repositórios Git usados pra manter pedaços de código (“snippets”) como se fosse um rascunho (não pertencem a nenhum projeto específico). Geralmente são usados como referência de código utilizados com frequência. É semelhante ao pastebin, só que permite controle de versão. No link, está disponível um exemplo de perfil de Gists.

Ao clicar no Gist de interesse, abre uma nova tela contendo o código, espaço para comentários, opção para fazer o download do código e até a opção de incorporar o conteúdo a um site através de tag javascript, conforme o exemplo a seguir:

Baixar o repositório em seu computador, trabalhar com ele e atualizar o GitHub

Geralmente trabalhamos em nosso computador para depois usar o GitHub de modo a disponibilizar o código online. Isso pode ser feito instalando-se o git em seu computador e executando alguns procedimentos, conforme segue. O git é um programa que pode ser instalado no Linux/Debian através do comando “sudo apt-get install git”.

Primeiramente, acesse o GitHub e crie um repositório, conforme tutorial do início do post. Clique no botão “Clone or download” e copie a URL informada.

Agora, você precisa trazer este projeto para o seu computador, processo esse chamado “clonar”. Para isso, dirija-se ao seu diretório de trabalho (onde deverá ficar o diretório do projeto, a ser criado) e execute o seguinte comando (onde URL é aquele link copiado anteriormente, algo do tipo https://github.com//site.git):

Uma pasta com o nome do projeto é criada e ele é baixado para a sua máquina. Nela, você pode criar ou copiar seus arquivos para ele e editar. Posteriormente, você deverá executar alguns comandos (executados dentro da pasta clonada) para adicionar esses arquivos ao projeto no GitHub, fazendo uso de versionamento:

– Adiciona o(s) arquivo(s) em um lugar chamado de INDEX, que funciona como uma área do git no qual os arquivos (novos ou alterados) possam ser enviados ao Github (ainda não está adicionando um arquivo novo ao repositório, só dizendo que o arquivo, novo ou não, está sendo preparado para entrar na próxima revisão do repositório) – se fizer alguma nova alteração no arquivo depois desse comando, ele deve ser executado novamente.

– Pega todos os arquivos que estão no INDEX e cria uma revisão com um número e um comentário (em uma área chamada de HEAD, que aponta para o último commit feito). O comando “git commit –amend” modifica a mensagem do commit mais recente, abrindo um editor de texto (útil caso você tenha incluído arquivos por engano e queira retirá-los, por exemplo).

– Publica todos os seus commits para o github (precisa usar sua senha).

– Exibe o status do seu repositório atual.

Caso comece a trabalhar em outro computador, basta repetir o procedimento de clonar o código para a nova máquina e os procedimentos para subir novamente os arquivos criados/modificados.

E se o projeto local está desatualizado? Ou seja, se voltar a trabalhar naquela sua primeira máquina ou se você/alguém fez uma alteração (diretamente no site ou subindo arquivos para o GitHub). Nesse caso, você deverá baixar novamente o projeto, mas não usando “clone”, e sim esse comando:

Em vez de usar o terminal, existe uma interface gráfica. Ela pode ser instalada através do comando “sudo apt install gitk” e executada através do comando “gitk”.

Iniciar um repositório no Bitbucket

O Bitbucket é um serviço de hospedagem de projetos controlados através do Mercurial, um sistema de controle de versões distribuído. É similar ao GitHub (que utiliza Git, somente) e é escrito em python. Possui também serviço gratuito, o que permite você criar uma conta para testar o serviço.

O primeiro passo é permitir acesso do seu computador para o servidor do Bitbucket. Em seu computador, você deve copiar a chave pública. Ela é o conteúdo do arquivo “~/.ssh/id_rsa.pub” – caso não tenha a chave, execute o comando “ssh-keygen -t rsa” para criá-la. Então acesse o site, faça login e clique em seu ícone de usuário (canto inferior esquerdo) para escolher a opção “Bitbucket settings”. Então clique em “Security | SSH keys” e em adicionar. Dê um nome (pode ser o nome da sua máquina) e cole a chave pública (copiada previamente para sua área de transferência) no quadro abaixo. Para testar, execute em seu PC “ssh -T [email protected]”.

Depois, você deve criar um repositório no servidor remoto, que é onde os códigos serão alocados. Faça o login para entrar na tela inicial. Clique no “+” no menu à esquerda, escolha “owner” (você mesmo), “project”, coloque o nome do repositório (escolha o mesmo nome da pasta de trabalho no seu computador) e não crie arquivo descritivo (deixe para criá-lo no seu próprio computador e subir tudo depois).

No terminal do seu computador, vá para o diretório cujos códigos devem ser enviados ao Bitbucket. Então execute os seguintes comandos:

Para ignorar todos os diretórios (por nome) em qualquer lugar abaixo do nível atual em uma árvore de diretórios é com um arquivo “.gitignore”. Para criá-lo, entre no diretório de trabalho e execute o comando “touch .gitignore”. Abra-o para edição e inclua os nomes dos diretórios que você não quer que sejam “gitados”.

Se você já tem alguma pasta no seu índice git que você não deseja mais acompanhar, então você precisa removê-las explicitamente. O Git não irá parar de rastrear caminhos que já estão sendo rastreados apenas porque eles agora correspondem a um novo padrão .gitignore. Para isso, execute os seguintes comandos:

Com tudo pronto, das próximas vezes que editar seu código, você pode executar somente esses comandos:

Para criar um README, use esse editor de markdown online e depois copie o texto para um arquivo local com o nome README.md

Criar uma “branch”

Para trabalhar com uma nova ramificação (“new branch”), você pode primeiro criá-la na interface do GitHub/Bitbucket (no painel do repositório, clique em “Branches” no menu esquerdo e no botão “Create branch”). Ele pode ser do tipo Bugfix (usado para corrigir ramificações de releases), Feature (para trabalho de recurso específico ou melhorias), Hotfix (corrigir rapidamente um ramo de produção sem interromper as alterações no ramo de desenvolvimento/master) ou Release (versões de manutenção de longo prazo). Assim, “feature/exemplo” pode ser o nome de um novo ramo para desenvolver um novo recurso.

Você também pode criar o ramo localmente, para depois subir ao servidor. Veja esse exemplo, onde o nome do novo ramo é “NOME_DO_RAMO”:

Estando na branch, os procedimentos de adicionar e “commitar” são os mesmos, mas para subir as modificações, o comando deve conter o nome do ramo, por exemplo:

Para voltar ao branch master, basta realizar o comando “git checkout master”.

Para fazer merge de uma outra branch à master, primeiro certifique-se que a branch está com todas as alterações “comitadas” e “enviadas”, então siga os passos:

Abrindo o site, as alterações que só estavam na branch agora estão na branch master também.

Para ver uma árvore de branchs e últimos commits:

Se quiser remover algum branch, use:

Se não tiver subido a branch para o servidor de códigos, isso é suficiente; caso contrário, acesse a interface e remova manualmente. Todas as alterações realizadas nessa branch serão perdidas, restando os códigos na última versão da branch master.

Fontes