Pular para o conteúdo principal

Tutorial do GitHub e do Git para iniciantes

Um tutorial para iniciantes que demonstra como funciona o controle de versão do Git e por que ele é crucial para projetos de ciência de dados.
24 de abr. de 2024  · 17 min de leitura

Imagem do autor

O que é o Git?

O Git é um sistema de controle de versão distribuído e de código aberto. Ele permite que os desenvolvedores e cientistas de dados rastreiem o código, mesclem alterações e revertam para versões mais antigas - AWS. Ele permite que você sincronize as alterações com um servidor remoto. Devido à sua flexibilidade e popularidade, o Git se tornou um padrão do setor, pois é compatível com quase todos os ambientes de desenvolvimento, ferramentas de linha de comando e sistemas operacionais. 

Como o Git funciona?

O Git armazena seus arquivos e o histórico de desenvolvimento deles em um repositório local. Sempre que você salva as alterações que fez, o Git cria um commit. Um commit é um instantâneo dos arquivos atuais. Esses commits são vinculados uns aos outros, formando um gráfico do histórico de desenvolvimento, conforme mostrado abaixo. Ele nos permite reverter para o commit anterior, comparar alterações e visualizar o progresso do projeto de desenvolvimento - Azure DevOps. Os commits são identificados por um hash exclusivo que é usado para comparar e reverter as alterações feitas.  

Um gráfico do histórico de desenvolvimento

Um gráfico do histórico de desenvolvimento

Filiais

As ramificações são cópias do código-fonte que funcionam paralelamente à versão principal. Para salvar as alterações feitas, mescle a ramificação na versão principal. Esse recurso promove o trabalho em equipe sem conflitos. Cada desenvolvedor tem sua tarefa e, usando ramificações, pode trabalhar no novo recurso sem a interferência de outros colegas de equipe. Quando a tarefa estiver concluída, você poderá mesclar os novos recursos com a versão principal (ramo mestre). 

Adição de um novo recurso ao repositório
Adicionando um novo recurso ao repositório


Compromissos

Há três estados de arquivos no Git: modificado, em estágio e confirmado. Quando você faz alterações em um arquivo, elas são salvas no diretório local. Eles não fazem parte do histórico de desenvolvimento do Git. Para criar um commit, você precisa primeiro preparar os arquivos alterados. Você pode adicionar ou remover alterações na área de preparação e, em seguida, empacotar essas alterações como um commit com uma mensagem descrevendo as alterações.  

Três estados de arquivos no Git
Três estados de arquivos no Git

Quais são os benefícios do Git?

  • Alterações de trilha: Ele permite que os desenvolvedores visualizem o histórico de alterações. O histórico de desenvolvimento facilita a identificação e a correção de bugs.
  • Integração do IDE: Devido à sua popularidade, a integração do Git está disponível em todos os ambientes de desenvolvimento, por exemplo, VSCode e JupyterLab.
  • Colaboração em equipe: Uma equipe de desenvolvedores pode ver seu progresso e, usando ramificações, pode trabalhar individualmente em uma tarefa e mesclar as alterações com a versão principal. As solicitações pull, a resolução de conflitos de mesclagem e a revisão de código promovem a colaboração da equipe. 
  • VSC distribuído: Em um sistema distribuído, não há armazenamento centralizado de arquivos. Há vários backups para o mesmo projeto. Essa abordagem permite que os desenvolvedores trabalhem off-line e confirmem as alterações. 

Git para projetos de ciência de dados

O Git oferece controle de versão para scripts, métricas, dados e modelos. Usando a extensão do Git git-lfs, você pode armazenar e versionar um grande banco de dados e modelos de aprendizado de máquina. Em um projeto típico de ciência de dados, você tem um notebook Jupyter, um conjunto de dados, um modelo, metadados e métricas de modelo. Os metadados incluem arquivos que contêm meta-informações sobre o modelo de aprendizado de máquina, recursos, parâmetros de modelo e arquivos de automação. Tudo isso é necessário para monitorar o progresso dos aplicativos de IA e resolver problemas. 

O rastreamento de experimentos de ciência de dados ajuda os cientistas a reverter alterações acidentais, selecionar o melhor experimento com base na métrica de desempenho e colaborar com outros colegas de equipe. O diagrama abaixo mostra como as alterações nos dados ou no código afetam os metadados e a saída do modelo. O acompanhamento dessas alterações também pode ajudar outros colegas de equipe a encontrar uma solução melhor. Saiba tudo sobre o Git no último blog de Summer Worsley.

Git para um projeto de ciência de dados
Git para um projeto de ciência de dados

Colaboração com o GitHub

O GitHub é uma plataforma de desenvolvimento de software em nuvem. É comumente usado para salvar arquivos, rastrear alterações e colaborar em projetos de desenvolvimento. Nos últimos anos, o GitHub se tornou a plataforma social mais popular para comunidades de desenvolvimento de software. As pessoas podem contribuir com projetos de código aberto e relatórios de bugs, discutir novos projetos e descobrir novas ferramentas. 

Os cientistas de dados e engenheiros de aprendizado de máquina estão seguindo o caminho dos desenvolvedores de software e integrando o fluxo de trabalho com o GitHub. Ao fazer isso, eles podem compartilhar seu trabalho de pesquisa, permitir a contribuição da comunidade e colaborar com as equipes de dados. Você pode encontrar todos os tipos de projetos, guias, tutoriais e recursos de ciência de dados e aprendizado de máquina nessa plataforma. Para os alunos, a plataforma se tornou uma oportunidade de ganhar experiência de trabalho e, por fim, conseguir um emprego em uma empresa de prestígio. 

Portfolio

A maioria dos recrutadores técnicos solicitará o portfólio de projetos ou o perfil do GitHub. Isso os ajuda a determinar se o candidato é adequado para a empresa. É altamente recomendável criar um perfil no GitHub e atualizá-lo regularmente. Os gerentes de contratação estão sempre em busca de candidatos com grande experiência em desenvolvimento de software e que contribuam para projetos de código aberto. Ser capaz de analisar o portfólio do GitHub os ajuda a preparar perguntas para sessões de entrevistas técnicas. 

Perfil do GitHub
Perfil do GitHub

O GitHub permite que os cientistas de dados apresentem seus projetos e também pode contar como experiência de trabalho em seu currículo. A apresentação de projetos de portfólio também cria oportunidades de trabalho conjunto, lançamento de uma startup e trabalho de pesquisa. 

Projetos de portfólio
Projetos de portfólio

Recursos

O GitHub também oferece vários outros recursos que são tão importantes quanto a apresentação de um portfólio. É necessário aprender sobre cada recurso para que você possa incorporá-los aos seus projetos de ciência de dados. 

  • Código aberto: O GitHub oferece um ecossistema completo para projetos de código aberto. Você pode patrocinar mantenedores, contribuir para um projeto, usar a ferramenta de código aberto em seu projeto existente e promover seu trabalho. 
  • Colaboração com a comunidade: O GitHub se tornou uma plataforma comunitária em que problemas, solicitações de recursos, código e contribuições de documentação podem ser discutidos. 
  • Explore: A guia GitHub Explore ajuda você a descobrir novos projetos, ferramentas de tendência e eventos para desenvolvedores. 
  • GitHub Gists: Você pode compartilhar o snippet do seu código ou incorporá-lo em um blog ou site. 
  • GitHub CLI: Ele permite que você realize solicitações de mesclagem, revise códigos, verifique problemas e monitore o progresso a partir do programa de linha de comando. 
  • Armazenamento gratuito: armazenamento ilimitado de repositórios privados e públicos.
  • Hospedagem na Web: Você pode publicar seu site de portfólio ou documentação. As páginas do GitHub proporcionam uma experiência de site fácil de criar e implantar. 
  • Codespace: um ambiente de desenvolvimento na nuvem integrado ao seu repositório do GitHub. 
  • Projeto: uma ferramenta personalizável e flexível para planejar e acompanhar o trabalho no GitHub.
  • Automação: O GitHub Action automatiza o fluxo de trabalho de desenvolvimento, como criação, teste, publicação, liberação e implantação.
  • Patrocinador: Você pode apoiar seu projeto ou desenvolvedores de código aberto favoritos pagando uma taxa mensal ou única. Ele também permite que os desenvolvedores usem plataformas de pagamento de terceiros, como o ko-fi. 

Comandos básicos

Antes de começarmos a gerenciar projetos de ciência de dados, vamos conhecer os comandos mais comuns do Git que você usará em todos os projetos de ciência de dados. Os comandos básicos incluem inicialização do repositório Git, salvamento de alterações, verificação de registros, envio das alterações para o servidor remoto e mesclagem. 

  • git init cria um repositório Git em um diretório local.
  • git clone <remote-repo-address>: copia o repositório inteiro de um servidor remoto para um diretório remoto. Você também pode usá-lo para copiar repositórios locais.
  • git add <file.txt>: adiciona um único arquivo ou vários arquivos e pastas à área de preparação.
  • git commit -m "Message": cria um instantâneo das alterações e o salva no repositório. 
  • O git config é usado para definir configurações específicas do usuário, como e-mail, nome de usuário e formato de arquivo. 
  • O git status mostra a lista de arquivos alterados ou arquivos que ainda precisam ser preparados e confirmados.  
  • git push <remote-name> <branch-name>: envia commits locais para a ramificação remota do repositório.  
  • git checkout -b <branch-name>: cria uma nova ramificação e alterna para uma nova ramificação.
  • git remote -v: exibe todos os repositórios remotos.
  • git remote add <remote-name> <host-or-remoteURL>: adiciona o servidor remoto ao repositório local. 
  • git branch -d <branch-name>: exclui a ramificação.
  • O git pull mescla commits em um diretório local a partir de um repositório remoto. 
  • git merge <branch-name>: depois de resolver os conflitos de mesclagem, o comando mescla o ramo selecionado com o ramo atual.
  • git log mostra uma lista detalhada dos commits do ramo atual.

Desenvolvimento completo com o GitHub
Desenvolvimento completo com o GitHub

Se você estiver interessado em aprender mais comandos, confira a folha de dicas do Git do Gitlab. 

Primeiros passos

Nesta seção, usaremos o Git para rastrear um projeto de ciência de dados e o GitHub como um servidor remoto. Aprenderemos a instalar o Git, criar e clonar um repositório do GitHub, executar experimentos de aprendizado de máquina e enviar alterações (notebook, modelo, dados) para o GitHub usando o Windows PowerShell 7.  

Instalação do Git

O Git é compatível com todos os sistemas operacionais. Você pode instalá-lo usando ferramentas de linha de comando ou fazer o download e instalar diretamente a configuração. 

Linux

Para sistemas operacionais baseados em Debian/Ubuntu, use `apt-get install git` e, se estiver usando outro sistema baseado em Linux, consulte a lista completa de comandos de instalação aqui.

macOS

Se você tiver o homebrew instalado, use este comando para baixar e instalar o Git: `brew install git`. Você também pode fazer o download do instalador binário e executar a configuração.

Windows

A instalação do Git no Windows é simples. Basta acessar a página de download, clicar na versão específica do Windows, fazer o download e instalar a configuração. Se você tiver uma ferramenta winget, poderá instalá-la digitando `winget install --id Git.Git -e --source winget` no PowerShell. 

Depois de instalar o Git, certifique-se de ter configurado o nome de usuário e o e-mail. Essas informações são usadas para assinar os commits. 

git config --global user.name "your-user-name"
git config --global user.email "your@email.com"

Para obter informações mais detalhadas sobre como instalar o Git, clique aqui

Inicialização do projeto

Se você tiver uma conta do GitHub, clique no botão + e selecione um novo repositório. Depois disso, digite o nome do repositório e adicione uma descrição simples. Ele criará um repositório público vazio. 

Criando um projeto
Criação de projeto

Há muitas maneiras de clonar repositórios remotos para o diretório local, e o GitHub fornece um guia detalhado sobre como clonar, adicionar remoto e inicializar um projeto Git.  

Clone do GitHub
Clone do GitHub

Podemos simplesmente clonar o repositório fornecendo um link HTTPS. Verifique se você está no diretório de trabalho usando o prompt de comando ou o PowerShell. 

git clone https://github.com/kingabzpro/DataCamp-Git.git

>>> Cloning into 'DataCamp-Git'...
>>> warning: You appear to have cloned an empty repository.

cd .\DataCamp-Git\

OU

Crie um novo diretório chamado "DataCamp-Git" e inicialize o Git usando um comando simples. Depois disso, adicione uma conexão ao repositório remoto para que você possa sincronizar seu trabalho com o GitHub.

mkdir DataCamp-Git
cd .\DataCamp-Git
git init

>>> Initialized empty Git repository in C:/Repository/GitHub/DataCamp-Git/.git/

git remote add origin https://github.com/kingabzpro/DataCamp-Git.git

OU

Se você já tiver um projeto em um diretório, basta inicializar o Git usando o `git init` e adicionar o GitHub remote, conforme mostrado acima. 

Compromisso simples

Antes de adicionarmos arquivos ao nosso repositório, verifique se você está no diretório local correto. 

Começaremos de forma simples e criaremos um arquivo README com o título DataCamp-Git. Em seguida, vamos adicioná-lo à área de preparação usando o `git add`. 

echo "# DataCamp-Git" >> README.md
git add README.md

O status do Git mostra que estamos na ramificação principal e que o arquivo `README.md` está preparado e pronto para ser confirmado.  

git status

>>> On branch main
>>> No commits yet
>>> Changes to be committed:
  (use "git rm --cached ..." to unstage)
        new file:   README.md

Para criar nosso primeiro commit, usaremos o `git commit` com uma mensagem. Como podemos observar, o primeiro commit é adicionado sob o hash ed9c886.

git commit -m "first commit"

>>> [main (root-commit) ed9c886] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md

Adição de arquivos de projeto

Usaremos o espaço de trabalho do DataCamp, MasterCard Stock Price, com LSTM e GRU e arquivos de download. O autor do projeto pré-processou os dados e treinou dados de séries temporais nos modelos LSTM e GRU. Saiba mais sobre o projeto lendo o Recurrent Neural Network Tutorial (RNN).

Para salvar o arquivo de modelo, adicionamos uma nova célula de código no notebook Jupyter do projeto. O novo script criará um novo diretório chamado "model" e salvará os modelos LSTM e GRU. 

!mkdir -p model
model_lstm.save('model/LSTM')
model_gru.save('model/GRU')

Como podemos ver, o repositório Git tem uma pasta de dados que contém arquivos CSV, a pasta do modelo com o peso e os metadados do modelo. 

Pasta de dados do Git

Agora vamos preparar todos os arquivos. Você pode adicionar qualquer diretório, arquivo ou dado após o comando inicial. 

git add .\data .\model LSTM_GRU.ipynb RNN.png

OU

Se você quiser adicionar todos os arquivos à área de preparação, use ponto. 

git add .

Comprometer e enviar

Confirmaremos todas as alterações com uma mensagem simples, e o resultado mostrará todos os novos arquivos no modo de criação. 

git commit -m "project files added"

>>> [main aa3e19a] project files added
>>>  10 files changed, 5020 insertions(+)
>>>  create mode 100644 LSTM_GRU.ipynb
>>>  create mode 100644 RNN.png
>>>  create mode 100644 data/Mastercard_stock_history.csv
>>>  create mode 100644 data/Mastercard_stock_info.csv
>>>  create mode 100644 model/GRU/saved_model.pb
>>>  create mode 100644 model/GRU/variables/variables.data-00000-of-00001
>>>  create mode 100644 model/GRU/variables/variables.index
>>>  create mode 100644 model/LSTM/saved_model.pb
>>>  create mode 100644 model/LSTM/variables/variables.data-00000-of-00001
create mode 100644 model/LSTM/variables/variables.index

A sincronização com o repositório remoto do GitHub requer um nome remoto e um nome de ramo `git push <remote-name> <branch-name>`. Se você tiver apenas um controle remoto e uma ramificação, o uso do `git push` funcionará.  

Após o `git push`, a janela pop-up solicitará as credenciais, basta adicionar seu nome de usuário ou senha do GitHub. Você também pode gerar tokens de acesso pessoal e adicioná-los em vez da senha. Para saber mais, leia o tutorial Git Push and Pull.

git push

>>> Enumerating objects: 21, done.
>>> Counting objects: 100% (21/21), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (19/19), done.
>>> Writing objects: 100% (21/21), 1.83 MiB | 1.59 MiB/s, done.
>>> Total 21 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git.git
>>>  * [new branch]      main -> main

Vamos verificar nosso repositório do GitHub kingabzpro/DataCamp-Git para ver se conseguimos enviar as alterações para o controle remoto. O repositório do GitHub tem todos os arquivos, dados e modelos.

Push remoto para o GitHub
Push remoto para o GitHub

Ramificações do Git

Recomenda-se trabalhar com ramificações: por exemplo, se você quiser trabalhar na documentação do projeto, crie uma ramificação de documentação usando `git checkout` ou `git branch`. Faça alterações no arquivo README e, quando tiver finalizado as alterações, mescle a ramificação com a base. 

No nosso caso, criamos e mudamos para uma nova ramificação chamada `readme`.

git checkout -b readme

Vamos editar o arquivo README adicionando uma descrição ao projeto e vinculando o espaço de trabalho e o tutorial do RNN DataCamp. Depois disso, faremos alterações de estágio e salvaremos um instantâneo das alterações com uma mensagem.

git add README.md
git commit -m "project description and links to blog"

>>> [readme f3b8b9b] project description and links to blog
>>>  1 file changed, 8 insertions(+)

O repositório remoto não tem um branch readme. Para criar uma nova ramificação e enviar as alterações, usaremos "readme:readme". A saída do comando mostra que novas ramificações foram criadas e que as ramificações locais e remotas do `readme` estão sincronizadas. 

git push origin readme:readme
>>> remote: Resolving deltas: 100% (1/1), completed with 1 local object.
>>> remote: Create a pull request for 'readme' on GitHub by visiting:
>>> remote:  https://github.com/kingabzpro/DataCamp-Git/pull/new/readme
>>> remote:
To https://github.com/kingabzpro/DataCamp-Git.git
>>>  * [new branch]      readme -> readme

Você pode observar que enviamos com sucesso o branch local para o GitHub com uma versão modificada do arquivo README.md. 

Ramo Leia-me no GitHub
Ramo Leia-me no GitHub

Solicitação de pull

Essa funcionalidade é comum para as organizações. Por exemplo, um desenvolvedor de software trabalhou em um novo recurso e deseja mesclar as alterações na ramificação remota principal. Agora, criaremos pull requests usando a GUI do GitHub, clicando no botão de pull request. Depois disso, selecione o ramo readme que queremos mesclar com a base (principal). Você pode digitar uma explicação detalhada dos recursos que foram adicionados e clicar no botão de solicitação pull. 

Pull request do readme para o branch principal
Pull request do readme para o ramo principal

O mantenedor do repositório comparará suas alterações e as mesclará quando elas tiverem passado em todos os testes. No nosso caso, você é o mantenedor, portanto, clique na solicitação de mesclagem para mesclar as alterações com a ramificação principal. 

Pull Request de merge do GitHub
Fazer merge do pull request no GitHub

Parabéns, criamos com sucesso um pull request e o mesclamos com o branch principal. Você pode ver as alterações na ramificação principal aqui

Se quiser ver todas as alterações em seu repositório git, basta digitar `git log`, e ele mostrará o histórico de alterações em seu projeto. O registro de alterações em projetos de ciência de dados é importante, e o Git nos ajuda a rastrear todas as alterações, mesmo em grandes conjuntos de dados. 

História dos registros do Git
Histórico dos registros do Git

Conclusão

O GitOps é fundamental para o desenvolvimento de aplicativos de dados. Eles se tornaram uma habilidade essencial para todos os tipos de trabalhos de TI; até mesmo pesquisadores acadêmicos estão usando-os para compartilhar códigos experimentais com um público mais amplo. Por outro lado, o GitHub desempenha um papel mais importante na promoção de projetos de código aberto, fornecendo um ecossistema de desenvolvimento de software gratuito para todos. 

Neste tutorial, aprendemos sobre o Git e o GitHub e por que eles são importantes para projetos de ciência de dados. O tutorial também apresenta os comandos básicos do Git e fornece experiência prática sobre como rastrear alterações nos dados, no modelo e no código. Se você estiver interessado em aprender mais sobre o Git, faça um curso de Introdução ao Git no DataCamp.  



Perguntas frequentes sobre o Git

O que é o Git?

Um sistema de controle de versão distribuído de código aberton. Ele permite que os desenvolvedores armazenem, versionem e visualizem as alterações em um projeto de desenvolvimento. Ele promove o trabalho em equipe flexível e o fluxo de trabalho otimizado. 

O que significa Git?

Não se trata de um acrônimo. De acordo com seu criador, Linus Torvalds, "Git pode significar qualquer coisa, dependendo do seu humor". É uma combinação de três letras aleatórias que não são usadas por nenhum comando UNIX.  

Como faço para clonar um repositório Git?

Jbasta digitar `git clone <endereço do repositório remoto>` em um terminal. Você pode clonar repositórios locais e remotos. Ele é compatível com os protocolos SSH e HTTPS.

Como excluir uma ramificação no Git?

Para excluir uma ramificação local, use `git branch -d <local_branch_name>`, e para excluir a ramificação remota, use `git push <remote_name> -d <remote_branch_name>`.

Como trocar de ramificação no Git?

Mude para uma ramificação existente usando `git checkout <nome da ramificação>` ou crie e mude para uma nova ramificação usando `git checkout -b <nome da ramificação>`.

Como faço para instalar o Git?

Para sistemas Linux, use `apt-get install git` e, para outros sistemas operacionais, consulte git-scm.com.

O Git é gratuito?

Sim, ele é gratuito e de código aberto sob a licença GPL-2.0.

O que é o Git Bash?

É um aplicativo do Microsoft Windows que fornece utilitários e experiência de shell baseados em Unix. 

Como criar uma nova ramificação no Git?

Use o comando `git branch <new-branch> <base-branch>` no terminal. Para criar e mudar para uma nova ramificação, use `git checkout -b <nome da ramificação>`.

O que o git pull faz?

Ele atualiza a versão local de um repositório a partir de um servidor remoto, copia todas as alterações de um repositório remoto e as mescla com o diretório local. Esse processo geralmente requer a resolução de conflitos de mesclagem. 

Temas
Relacionado
Git

blog

O que é Git? Manual completo do Git

Saiba mais sobre o sistema de controle de versão mais conhecido e por que é uma ferramenta de colaboração indispensável para cientistas de dados e programadores.
Summer Worsley's photo

Summer Worsley

14 min

tutorial

Tutorial de push e pull do GIT

Saiba como realizar solicitações Git PUSH e PULL por meio do GitHub Desktop e da linha de comando.

Olivia Smith

13 min

tutorial

Tutorial de Markdown no Jupyter Notebook

Neste tutorial, você vai aprender a usar e escrever com diferentes tags de marcação usando o Jupyter Notebook.

Olivia Smith

9 min

tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

tutorial

Git Rename Branch: Como renomear uma filial local ou remota

Saiba como renomear ramificações locais e remotas do Git usando o terminal ou a interface gráfica do usuário (GUI) de clientes populares como o GitHub.
François Aubry's photo

François Aubry

tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
See MoreSee More