Git e Git Hub

O que é Git e GitHub?

O Git e o GitHub são duas ferramentas essenciais para o desenvolvimento de software, especialmente no controle de versões e colaboração em projetos.

Git

Criado por Linus Torvalds em 2005, o Git é amplamente utilizado por desenvolvedores de software em todo o mundo. O Git é um sistema de controle de versão distribuído. 

Isso significa que ele permite que você acompanhe as mudanças em seu código-fonte ao longo do tempo, mantendo um histórico completo de todas as alterações.

  • Controle de Versão Local: Você pode usar o Git para controlar as mudanças em seu código-fonte localmente em seu computador.

  • Ramificação (Branching) e Mesclagem (Merging): O Git permite que você crie ramificações do seu código para trabalhar em novos recursos ou correções de bugs sem afetar a versão principal. Posteriormente, você pode mesclar essas ramificações de volta à versão principal.

  • Histórico Completo: O Git mantém um histórico completo de todas as alterações, o que facilita a identificação de quem fez uma alteração e por quê. Isso é fundamental para entender a evolução do código ao longo do tempo.

    • Reversão de Alterações: Se um erro for introduzido ou uma alteração causar problemas, o Git permite reverter facilmente para uma versão anterior do código.
  • Flexibilidade: É altamente flexível e pode ser usado em projetos de qualquer tamanho, desde pequenos scripts até grandes projetos de código aberto.

  • Colaboração: O Git facilita a colaboração entre desenvolvedores, pois várias pessoas podem trabalhar no mesmo projeto ao mesmo tempo, criando “ramificações” para implementar novos recursos ou correções de bugs. Posteriormente, as alterações podem ser “mescladas” de volta ao código principal.

GitHub

O GitHub, por outro lado, é uma plataforma de hospedagem de código que desempenha um papel crucial no desenvolvimento de software, incluindo projetos escritos em linguagens de programação como R e Python. Ele oferece um ambiente online para gerenciar, compartilhar, colaborar e controlar versões de código-fonte.

  • Hospedagem de Repositórios: O GitHub oferece espaço na web para hospedar repositórios Git de projetos escritos em R e Python. O repositório é usado para hospedar e armazenar todo o código-fonte, arquivos e recursos relacionados ao seu projeto. Isso torna o código acessível a qualquer pessoa com acesso à internet.
  • Colaboração: O GitHub facilita a colaboração em projetos R e Python, permitindo que vários desenvolvedores trabalhem no mesmo código simultaneamente. Eles podem clonar (copiar) repositórios, fazer modificações locais e, em seguida, enviar essas modificações de volta para o repositório original por meio de solicitações de pull (pull requests).
    • Controle de Acesso: Você pode gerenciar permissões e conceder acesso a diferentes colaboradores, definindo quem pode ler, gravar ou administrar o repositório. 
    • Histórico de Colaboradores: O repositório mantém um registro de todos os colaboradores e suas contribuições.
    • Comentários e Discussões: Os colaboradores podem comentar o código, problemas e solicitações de pull, permitindo discussões detalhadas.
  • Controle de Versão: O GitHub oferece integração com o sistema de controle de versão Git, permitindo o rastreamento de alterações no código-fonte ao longo do tempo.
    • Revisão de Código: Os colaboradores podem revisar e comentar o código diretamente no GitHub, o que facilita a revisão de código e a colaboração. 
    • Histórico de Alterações: O repositório mantém um histórico completo de todas as alterações, permitindo que você veja quem fez o quê, quando e por quê.
  • Rastreamento de Problemas e Solicitações de Pull: Você pode criar “issues” para relatar problemas, tarefas ou melhorias em seu projeto. Isso ajuda a organizar o trabalho e permite discussões em torno de problemas específicos, além de permitir que os colaboradores enviem solicitações de pull (pull requests) para contribuir com código.
    • Solicitações de Pull (Pull Requests): As “pull requests” permitem que os colaboradores enviem suas alterações para serem revisadas e mescladas no código principal. É um recurso essencial para colaboração e revisão de código.
  • Ramificação (Branching) e Mesclagem (Merging): Você pode criar “ramificações” do código para trabalhar em novos recursos ou correções de bugs sem afetar a versão principal. Posteriormente, você pode mesclar essas ramificações de volta à versão principal.
    • Proteção de Branches: Você pode configurar políticas para proteger certas ramificações, como a ramificação principal, para evitar alterações não autorizadas.
  • Notificações e Acompanhamento: Você pode receber notificações sobre atividades no repositório, como novos problemas, solicitações de pull ou comentários.
  • Revisão de Código: Os colaboradores podem revisar e comentar o código diretamente no GitHub, o que facilita a revisão de código e a colaboração.
  • GitHub Actions: Integração contínua (CI) e automação de fluxo de trabalho são suportadas por meio do GitHub Actions, que ajuda a automatizar tarefas como compilação, teste e implantação.
  • GitHub Pages: Você pode usar o GitHub Pages para hospedar sites, documentação ou páginas da web relacionadas ao projeto.

Diferenças entre Git e GibHub

  • Natureza:
    • Git é um sistema de controle de versão, uma ferramenta de linha de comando que lida com o controle de versões de código.
    • GitHub é uma plataforma online que fornece hospedagem para repositórios Git, tornando a colaboração e o compartilhamento de código mais fáceis.
  • Acesso Online:

    • Git funciona localmente em seu computador.
    • GitHub é uma plataforma na web que permite acessar repositórios de código de qualquer lugar.
  • Colaboração:

    • Git permite o controle de versões local, mas não facilita a colaboração entre diferentes desenvolvedores de forma centralizada.
    • GitHub é projetado para a colaboração, permitindo que vários desenvolvedores colaborem em um projeto e gerenciem as contribuições de maneira eficaz.
  • Ferramentas de Colaboração:

    • Git não possui ferramentas integradas para rastreamento de problemas, gerenciamento de colaboradores ou integração contínua.
    • GitHub oferece ferramentas avançadas para rastreamento de problemas, solicitações de pull, gerenciamento de colaboradores e integração contínua por meio do GitHub Actions.

Criando repositório GitHub para um projeto

  1. Crie uma Conta no GitHub: Se você ainda não tem uma conta no GitHub, vá para o site do GitHub (https://github.com/) e crie uma conta gratuita. Você precisará de uma conta para criar e gerenciar repositórios.

  2. Faça Login na Sua Conta do GitHub: Após criar uma conta, faça login no GitHub com seu nome de usuário e senha.

  3. Acesse a Página Inicial do GitHub: Uma vez logado, você será direcionado para a página inicial do GitHub.

  4. Crie um Novo Repositório: Na página inicial, clique no botão “New” (Novo) no canto superior direito ou acesse diretamente a URL “https://github.com/new“.

  5. Preencha as Configurações do Repositório: Preencha as informações necessárias para criar o repositório, incluindo:

    • Repository Name (Nome do Repositório): Escolha um nome descritivo para o seu projeto em R ou Python.
    • Description (Descrição): Adicione uma breve descrição do projeto para que os outros saibam o que ele faz.
    • Public ou Private (Público ou Privado): Você pode escolher tornar o repositório público (visível para todos) ou privado (acesso restrito).
    • Initialize this repository with a README (Inicializar este repositório com um README): Marque esta opção se você quiser criar um arquivo README.md inicial. Isso é altamente recomendado para fornecer informações sobre o projeto.
  6. Escolha uma Licença (Opcional): Se desejar, você pode escolher uma licença para o seu projeto. As licenças definem como outras pessoas podem usar seu código. Se você não tem certeza, pode adicionar uma licença posteriormente.

  7. Adicione um arquivo .gitignore (Opcional): Se o seu projeto em R ou Python utiliza dependências ou gera arquivos temporários que não devem ser versionados, é uma boa ideia adicionar um arquivo .gitignore. Você pode escolher modelos de .gitignore adequados ao seu ambiente de desenvolvimento.

  8. Adicione um arquivo de README (Opcional): Se você optou por inicializar o repositório com um README, você pode editá-lo para fornecer informações detalhadas sobre o seu projeto, incluindo instruções de instalação e uso.

  9. Clique em “Create Repository” (Criar Repositório): Após preencher todas as informações necessárias, clique no botão “Create Repository” para criar o repositório.

Principais comandos do GitHub

O GitHub é uma plataforma que fornece uma interface amigável para interagir com repositórios Git, que é o sistema de controle de versão subjacente. Portanto, muitos dos comandos principais que você usa no GitHub são na verdade comandos Git. Aqui estão alguns dos comandos mais comuns usados no GitHub:

  • git init: Inicializa um novo repositório Git local em um diretório.

  • git clone: Clona um repositório Git remoto para o seu computador, criando uma cópia local.

  • git add: Adiciona arquivos ou alterações ao “staging area” para prepará-los para um commit.

  • git commit: Registra as alterações feitas no “staging area” no histórico do repositório.

  • git push: Envia as alterações feitas em seu repositório local para um repositório remoto no GitHub.

  • git pull: Recupera as alterações do repositório remoto no GitHub para o seu repositório local.

  • git branch: Lista as “branches” disponíveis em seu repositório.

  • git checkout: Alterna entre diferentes “branches” ou revisões do código.

  • git merge: Mescla as alterações de uma “branch” em outra.

  • git status: Exibe o estado atual do seu repositório, mostrando as alterações pendentes.

  • git log: Mostra o histórico de commits do repositório, incluindo informações sobre os autores e as mensagens de commit.

  • git diff: Mostra as diferenças entre os arquivos no “staging area” e as versões anteriores.

  • git remote: Exibe informações sobre repositórios remotos vinculados ao seu repositório local.

  • git fetch: Busca informações e alterações de um repositório remoto, mas não mescla as alterações com o seu código local.

  • git reset: Permite reverter alterações em commits específicos.

  • git config: Configura opções do Git, como nome de usuário, endereço de e-mail e preferências.

  • git rm: Remove arquivos do repositório e do controle de versão.

  • git tag: Permite criar, listar e gerenciar tags para marcar versões específicas do código.

Estes são apenas alguns dos comandos Git mais comuns que você pode usar no GitHub. No entanto, o GitHub também oferece uma interface da web que simplifica muitas dessas tarefas, tornando mais fácil a interação com repositórios, colaboração e gerenciamento de projetos, especialmente se você não estiver familiarizado com a linha de comando Git.

Como colaborar em projetos de código aberto

Colaborar em projetos de código aberto no GitHub relacionados a R e Python é uma ótima maneira de contribuir para a comunidade e aprimorar suas habilidades de programação. 

1. Escolha um Projeto:

  • Use a barra de pesquisa do GitHub para encontrar projetos de código aberto relacionados a R e Python que lhe interessem. Você pode pesquisar por palavras-chave, tecnologias ou tópicos específicos.

2. Familiarize-se com o Projeto:

  • Leia a documentação do projeto e o arquivo README para entender os objetivos, as diretrizes de contribuição e os padrões de código. Isso é crucial para entender como você pode contribuir de maneira eficaz.

4. Faça um Fork do Repositório:

  • Na página do repositório do projeto no GitHub, clique no botão “Fork” no canto superior direito. Isso criará uma cópia do repositório na sua conta.

5. Crie um Branch para suas Alterações:

  • Clique no botão “Branch: [nome do branch atual]” localizado acima da lista de arquivos no repositório. No campo de pesquisa, digite o nome que deseja dar ao novo branch. Clique no botão “Create branch: [nome do novo branch]”. Agora você estará no novo branch que acabou de criar. Você pode começar a fazer alterações e commits nesse branch diretamente no GitHub. É uma boa prática criar um branch separado para cada funcionalidade ou correção.
  1.  

6. Faça suas Alterações:

  • Use um editor de código de sua escolha para fazer as alterações no código-fonte. Certifique-se de seguir os padrões e diretrizes do projeto.

7. Faça Commit de Suas Alterações:

  • Use o comando git add para adicionar os arquivos que você alterou, e depois use git commit para confirmar suas alterações no branch.

8. Envie suas Alterações como um Pull Request (PR):

  • No GitHub, vá até a página do seu fork do projeto e clique no botão “New Pull Request”. Descreva suas alterações de maneira clara e concisa.

9. Aguarde a Análise e Comentários:

    • Os mantenedores do projeto revisarão suas alterações e podem solicitar modificações ou fornecer feedback. Esteja disposto a fazer ajustes com base no feedback recebido.

Diferença de repositório público e privado

A principal diferença entre um repositório público e um repositório privado no GitHub é o acesso e a visibilidade do código.

Repositório Público:

  • Visibilidade: Um repositório público é acessível por qualquer pessoa na internet. Qualquer pessoa pode visualizar o código, cloná-lo, criar problemas (issues), fazer solicitações de pull (pull requests) e colaborar no projeto.

  • Colaboração Aberta: Repositórios públicos incentivam a colaboração aberta e permitem que uma comunidade mais ampla de desenvolvedores contribua para o projeto.

  • Gratuito: O GitHub oferece hospedagem gratuita para repositórios públicos, o que é uma opção popular para projetos de código aberto e de divulgação de conhecimento.

  • Rastreamento e Divulgação: Projetos públicos são ideais para rastrear problemas, permitir que outros colaborem e divulgar seu trabalho para um público amplo.

Repositório Privado:

  • Visibilidade Restrita: Um repositório privado é visível apenas para as pessoas que têm permissão de acesso. Isso significa que o código não é acessível ao público em geral, a menos que você conceda explicitamente permissões.

  • Controle de Acesso: Os proprietários do repositório têm controle total sobre quem pode visualizar, clonar, contribuir e colaborar no projeto. Eles podem conceder acesso a membros específicos da equipe ou a colaboradores externos.

  • Privacidade e Segurança: Os repositórios privados são usados para projetos em que a privacidade e a segurança do código são essenciais, como projetos comerciais ou com informações confidenciais.

  • Custos: Os repositórios privados normalmente têm um custo associado ao uso, a menos que você esteja em um plano educacional ou em uma organização que tenha licenças que cubram repositórios privados.

  • Proteção de Propriedade Intelectual: Os repositórios privados são adequados para proteger propriedade intelectual e código-fonte proprietário.

Como criar e gerenciar 'issues' para rastrear problemas e tarefas em projetos

Criar e gerenciar “issues” no GitHub é uma prática comum para rastrear problemas, tarefas e melhorias em projetos de R e Python.

1. Acesse o Repositório:

  • Acesse a página do repositório no GitHub onde você deseja criar a “issue”.

2. Clique na guia “Issues”:

  • Na barra de navegação do repositório, clique na guia “Issues”. Isso o levará para a seção de rastreamento de problemas do repositório.

3. Crie uma Nova Issue:

  • Clique no botão “New issue” (ou “New” seguido de “Issue” se você estiver usando a versão mais antiga do GitHub). Isso abrirá um editor onde você pode criar uma nova issue.

4. Preencha os Detalhes:

  • Preencha os seguintes detalhes na nova issue:
    • Título: Um título conciso e descritivo que resume o problema ou a tarefa.
    • Comentário: Uma descrição mais detalhada do problema ou da tarefa, incluindo passos para reproduzir o problema, se aplicável.
    • Rótulos: Adicione rótulos para categorizar a issue (por exemplo, “bug”, “melhoria”, “documentação”, etc.).
    • Responsáveis: Você pode atribuir a issue a uma pessoa ou equipe responsável. Isso é opcional.
    • Projetos: Se o projeto estiver usando a funcionalidade de “Projects”, você pode associar a issue a um projeto específico.

5. Comentários e Edições:

  • Depois de criar a issue, outros colaboradores podem comentar, sugerir soluções e discutir o problema ou tarefa. Você pode editar a issue a qualquer momento para adicionar mais informações ou fazer alterações.

6. Referências Cruzadas:

  • Você pode vincular issues a outras issues ou a solicitações de pull (pull requests) usando o número da issue ou o texto-chave (por exemplo, “fixes #10” ou “related to #20”). Isso ajuda a estabelecer relações entre diferentes partes do projeto.

7. Fechamento de Issues:

  • Quando um problema ou tarefa estiver resolvido, você pode fechar a issue. Os mantenedores do projeto geralmente fazem isso para indicar que a tarefa foi concluída. As issues fechadas podem ser reabertas se necessário.

8. Uso de Markdown:

  • Você pode usar a formatação Markdown no título, comentários e descrição da issue para tornar as informações mais legíveis. O GitHub oferece suporte ao Markdown para formatação de texto.

9. Notificações:

  • Os colaboradores envolvidos na issue receberão notificações por e-mail ou pelo GitHub sempre que houver atividade, como comentários ou alterações de status.

10. Pesquisa de Issues:

  • Você pode pesquisar issues usando vários filtros, como rótulos, responsáveis e muito mais. Isso ajuda a encontrar issues específicas rapidamente.

11. Acompanhamento:

  • Você pode acompanhar as issues que lhe interessam, mesmo que você não seja o autor original. Isso permite receber notificações sobre o progresso da issue.

Boas práticas para escrever um README

Um README eficaz em repositórios do GitHub para projetos R e Python é fundamental para comunicar de forma clara e concisa o propósito do projeto, como usá-lo e como contribuir. 

  1. Título Descritivo:

    • Comece com um título descritivo que explique o que o projeto faz.
  2. Descrição Concisa:

    • Logo após o título, forneça uma descrição curta, mas informativa, do propósito do projeto. Isso ajuda os visitantes a entender do que se trata o projeto em poucas palavras.
  3. Logotipo ou Imagem Representativa:

    • Se possível, inclua um logotipo ou uma imagem que represente visualmente o projeto.
  4. Índice:

    • Crie um índice para que os leitores possam navegar facilmente pelo README, especialmente se for longo. Use âncoras para linkar seções.
  5. Instruções de Uso:

    • Forneça instruções claras sobre como usar o projeto. Isso pode incluir:
      • Instalação de dependências (para R, Python, ou outras bibliotecas).
      • Instruções de configuração.
      • Exemplos de uso e código de amostra.
      • Links para documentação adicional.
  6. Exemplos de Código:

    • Inclua exemplos de código para demonstrar o uso básico do projeto. Isso ajuda os usuários a começarem rapidamente.
  7. Requisitos do Sistema:

    • Liste os requisitos mínimos do sistema, como versões específicas de R, Python ou outras bibliotecas.
  8. Capturas de Tela:

    • Se aplicável, inclua capturas de tela ou imagens para ilustrar a aparência do projeto em ação.
  9. Contribuição:

    • Forneça diretrizes claras para contribuição, incluindo como os desenvolvedores podem criar “pull requests” e relatar problemas.
  10. Licença:

    • Especifique a licença sob a qual o projeto é lançado. Isso é importante para esclarecer como os outros podem usar e distribuir o código.
  11. Status do Projeto:

    • Indique o status atual do projeto. Isso pode incluir informações sobre se o projeto está em desenvolvimento ativo, em manutenção ou se está inativo.
  12. Agradecimentos e Contribuidores:

    • Reconheça os colaboradores e agradeça a sua contribuição. Isso promove uma comunidade positiva em torno do projeto.
  13. Links Relevantes:

    • Inclua links para a documentação completa, a página do projeto, o sistema de rastreamento de problemas (separado do README) e outras fontes de informação relacionadas ao projeto.
  14. Estilo e Formatação:

    • Use formatação Markdown para criar uma apresentação visualmente agradável. Use cabeçalhos, listas, ênfase (negrito e itálico) e código inline para tornar o texto mais legível.
  15. Revisão Regular:

    • Revise e atualize o README regularmente à medida que o projeto evolui. Isso garante que as informações estejam sempre atualizadas e relevantes.

Gerenciando permissões e colaboradores de um repositório

Gerenciar permissões e colaboradores em um repositório do GitHub para um projeto em R ou Python é uma parte importante da administração do projeto. Isso ajuda a controlar quem pode contribuir, revisar e gerenciar o repositório. 

1. Acesse as Configurações do Repositório:

  • Acesse a página do repositório no GitHub.
  • Clique na aba “Settings” (Configurações) no menu superior direito do repositório.

2. Configurar Permissões do Repositório:

  • No painel à esquerda, selecione a opção “Collaborators” (Colaboradores).
  • Aqui, você pode adicionar ou remover colaboradores e ajustar as permissões.

3. Adicionar Colaboradores:

  • Na seção “Collaborators”, digite os nomes de usuário dos colaboradores que deseja adicionar.
  • Escolha o nível de acesso apropriado para cada colaborador:
    • “Read” (Leitura): Permite que os colaboradores visualizem o código e a documentação, mas não façam alterações.
    • “Write” (Escrita): Permite que os colaboradores façam alterações no código e na documentação.
    • “Admin” (Administração): Permite que os colaboradores gerenciem todas as configurações do repositório, incluindo permissões.

4. Convidar Colaboradores:

  • Após adicionar colaboradores, clique em “Add [nome do colaborador]” para convidá-los a participar do repositório.
  • Os colaboradores receberão um convite por e-mail e deverão aceitá-lo para se tornarem membros do repositório.

5. Remover ou Alterar Colaboradores:

  • Para remover ou alterar as permissões de um colaborador existente, clique no nome do colaborador na lista de colaboradores e ajuste as configurações.

6. Permissões de Acesso Público ou Privado:

  • Lembre-se de que as configurações de acesso (público ou privado) do repositório também afetarão as permissões dos colaboradores. Repositórios públicos são acessíveis a todos, enquanto os privados são restritos aos colaboradores adicionados.

7. Proteção de Ramos:

  • Nas configurações do repositório, você pode configurar regras de proteção de ramos para evitar que colaboradores não autorizados façam alterações em ramos específicos. Isso é útil para proteger ramos críticos, como o ramo “master” ou “main”.

8. Configurar Grupos e Equipas (Organizações):

  • Se você estiver gerenciando um projeto em uma organização do GitHub, poderá usar equipes e grupos para gerenciar permissões de maneira mais eficaz.

9. Contribuições em Repositórios Públicos:

  • Em repositórios públicos, qualquer pessoa pode criar um “fork” do seu projeto e enviar “pull requests”. Você pode revisar essas solicitações e optar por incorporar as alterações ao projeto.

GitHub Desktop

O GitHub Desktop é um aplicativo de desktop fornecido pelo GitHub que simplifica a interação com repositórios Git hospedados no GitHub. Ele oferece uma interface gráfica amigável para gerenciar, clonar, confirmar (commit), ramificar (branch), mesclar (merge) e enviar (push) alterações em seus repositórios. 

Instalação do GitHub Desktop:

  1. Baixe o GitHub Desktop:
    • Você pode fazer o download do GitHub Desktop no site oficial em https://desktop.github.com/. Ele está disponível para Windows e macOS.
  2. Instale o Aplicativo:
    • Execute o instalador baixado e siga as instruções para concluir a instalação.
  3. Faça Login na sua Conta do GitHub:
    • Após a instalação, abra o aplicativo e faça login com sua conta do GitHub.

Git e Git Hub