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). 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ê.

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:

Para trabalhar com uma nova ramificação (“new branch”), primeiro crie-a na interface do GitHub. No computador local, use o comando “git checkout NOVO_RAMO” e “git pull” para o git local saber da existência desse novo branch. Os procedimentos de adicionar e “commitar” são os mesmos, mas para subir as modificações, o comando deve contor o nome do ramo, por exemplo: “get push NOVO_RAMO”.

Para voltar ao branch master, basta realizar o comando “git checkout master”. Para fazer merge de um outro branch ao seu branch ativo (ex. master), use “git merge NOVO_BRANCH”.

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”.

Resumo prático

A respeito do último comando, ele assume que você já possui um repositório remoto definido para aquele ramo. Se precisar definir, pode usar “git init” para inicializar repositório Git (se necessário) e “git push -f –set-upstream git@bitbucket.org:nome_do_usuario/nome_do_repositorio.git master”. Para criar um README, use esse editor de markdown online e depois copie o texto para um arquivo local com o nome README.md

Para dispensar a digitação da senha toda vez que fizer uma conexão com o github, crie um par de chave pública/privada criptografadas e copie a chave pública para o servidor do git, através do painel de controle do serviço (parte “SSH keys” do seu usuário). Você pode usar o arquivo “/home//.ssh/id_rsa.pub” do seu computador.

Fontes