Controle de versão com git, GitHub e RStudio


Unicamp

Maurício Vancine
Matheus Moroti

11 de março de 2025

Conteúdo

  • utilidade e importancia (exemplos - fair)
  • reprodutibilidade - ambiente virtual
  • controle de versao
  • git vs github
  • repositorio local e remoto
  • readme.md
  • fluxo de trabalho com git
  • fork > clone > add/commmit/push > branch? > pull request
  • status, show, log, diff, .gitignore, branch?, fetch, rebase, merge, checkout e switch

Maurício Vancine



  • Ecólogo e Doutor em Ecologia
  • Pós-Doutorado em Ecologia Espacial
  • Ecologia Espacial
  • Modelagem Ecológica
  • Análise de Dados Ecológicos e Espaciais
  • Ecologia e Conservação de Anfíbios
  • Open source (R, QGIS, GNU/Linux)

Matheus Moroti



  • Ecólogo e Doutor em Ecologia
  • Pós-Doutorado em Ecologia Espacial
  • Ecologia Espacial
  • Modelagem Ecológica
  • Análise de Dados Ecológicos e Espaciais
  • Ecologia e Conservação de Anfíbios
  • Open source (R, QGIS, GNU/Linux)

Workshop

  • Carga horária bem enxuta: 06 h
  • Parte teórica: 03 h (manhã)
  • Parte prática: 03 h (tarde)
  • Nosso principal objetivo é introduzir o tema de reprodutibilidade e controle de versão
  • Vamos indicar muito material para estudo
  • Cursos são ótimo para “quebrar o gelo”, mas o aprendizado depende de vocês

Conteúdo

  1. Princípio FAIR (Findable, Accessible, Interoperable, Reusable)
  2. Conferindo os computadores
  3. Ambiente virtual (renv)
  4. Controle de versão
  5. git e GitHub
  6. Detalhes do GitHub
  7. Controle de versão na prática
  8. GitHub: Fork
  9. Configuração: git config
  10. Iniciando localmente: git init
  11. Iniciando remotamente: git clone
  1. Versionamento: git add, git commit e git status
  2. Ignorando: .gitignore
  3. Histórico: git log e git show
  4. Diferenças: git diff
  5. Desfazer: git revert e git reset
  6. Ramificações: git branch, git switch e git merge
  7. Remoto: git remote, git push e git pull
  8. GitHub: Pull request
  9. Interface gráfica do RStudio

IMPORTANTE!!!

Estamos num espaço seguro e amigável

  • Sintam-se à vontade para me interromper e tirar dúvidas

1. Princípio FAIR

1. Princípio FAIR

  • Findable, Accessible, Interoperable, Reusable

2. Conferindo os computadores

2. Conferindo os computadores


R (>4.4.x)
https://www.r-project.org/


RStudio (>2024.12.x)
https://www.rstudio.com/


git (>2.48.x)
https://git-scm.com/

3. Ambiente virtual (renv)

3. Ambiente virtual (renv)

4. Controle de versão

4. Controle de versão

Quem nunca…

4. Controle de versão

Manejar projetos individualmente



4. Controle de versão

Manejar projetos compartilhados

4. Controle de versão

Manejar projetos no tempo

4. Controle de versão

Principal ferramenta utilizada em grandes projetos

5. git e GitHub

5. git e GitHub

git

  • Software (app) que faz o controle de versão
  • Maneja os repositórios locais (computador) e remotos (e.g. GitHub)

5. git e GitHub

git

  • Criado por Linus Torvalds em 2005 para substituir o BitKeeper SCM no gerenciamento do Kernel Linux
  • Software livre, distribuído sob a licença GNU GPL v.2

5. git e GitHub

git

5. git e GitHub

GitHub

  • Repositórios remotos
  • Plataformas de hospedagem de códigos com controle de versão

5. git e GitHub

ATENÇÃO: dois conceitos!

  • git: software (app) que faz o controle de versão
  • GitHub: plataforma para hospedar arquivos versionados

5. git e GitHub

ATENÇÃO: dois conceitos!

  • git: software (app) que faz o controle de versão
  • GitHub: plataforma para hospedar arquivos versionados

5. git e GitHub

GitHub

Vamos criar uma conta no GitHub (caso não possuam)

5. git e GitHub

GitHub

Salvem ou recuperem essas informações!



username: mauriciovancine
email: mauricio.vancine@gmail.com
senha: !@#$%¨&*+

6. Detalhes do GitHub

6. Detalhes do GitHub

Perfil

  • Overview: suas informações (rede social)
  • Repositories: lista todos os repositórios
  • Projects: ferramentas de gerenciamento (Kanban e tarefas)
  • Packages: pacotes (bibliotecas) ou containers (Docker)
  • Stars: respositórios marcados com estrela
  • Settings: superior direito > foto do perfil > settings

6. Detalhes do GitHub

Repositório

  • Code: arquivos, histórico, clone/download e README.md
  • Issues: rastrear bugs, sugestões de melhorias ou tarefas
  • Pull requests: gerencia propostas de alterações no código
  • Actions: gerencia fluxos de trabalho automatizados
  • Projects: ferramentas de gerenciamento visual (Kanban)
  • Wiki: documentação extensa e detalhada do projeto
  • Security: ajuda a gerenciar a segurança do código
  • Insights: fornece análises detalhadas sobre o repositório
  • Settings: gerencia as configurações do repositório

6. Detalhes do GitHub

README.md

  • Arquivo de documentação principal de um repositório
  • Escrito em Markdown (formatação simples e amigável)
  • Aparece automaticamente na página inicial do repositório
  • Fornece informações essenciais sobre o projeto
  • Apresenta o propósito do projeto
  • Explica o conteúdo dos arquivos de códigos e diretórios

Prática 1

Criar uma página inicial para o perfil do GitHub

Prática 1

Criar uma página inicial para o perfil do GitHub

  1. Criem um repositório com o nome de usuário de vocês (e.g. mauriciovancine)
  2. Criem um arquivo README.md nesse repositório
  3. Preencham com algum conteúdo em Markdown
  4. Comitem e voltem para a página de perfil

7. Configurações: RStudio, git, GitHub

7. Configurações

RStudio

7. Configurações

RStudio

  • Tools > Global Options > Git/SVN

7. Configurações

RStudio

  • Marque Enable version control interface…
  • Git executable:
  • Windows: C:/Program Files/Git/bin/git.exe
  • Ubuntu: /usr/bin/git
  • Mac: ???

7. Configurações

RStudio

Chave SSH

  1. Create RSA key
  2. View public key
  3. Copiar: Ctrl + C

7. Configurações

GitHub

  • Perfil > Settings > SSH and GPG keys > New SSH key

7. Configurações

GitHub

  • Title: um nome qualquer (eu add por nome de PC ou notebook)
  • Key: colar (Ctrl + V)
  • Add SSH key

7. Configurações

git

  • git config: definir as configurações de usuário do git
  • Terminal (colar com ctrl + shift + v)
# terminal
git config --list
git config --global user.name "meu nome"
git config --global user.email "email@dominio.com"
git config --list

Tudo certo até aqui?

Agora sim, podemos começar o versionamento…

8. Controle de versão na prática

8. Controle de versão na prática

Duas formas de trabalhar com o git e GitHub

  1. Iniciando um projeto em nosso computador (git)
  2. Iniciando por um repositório remoto (GitHub)

8. Controle de versão na prática

8. Controle de versão na prática

8. Controle de versão na prática

9. GitHub: Fork

9. GitHub: Fork

Fork: cópia de um repositório remoto para o seu GitHub

Prática 2

Forken o repositório do workshop

9. GitHub: Fork

Agora o repositório do workshop, que estava no meu GitHub, foi copiado (“garfado”) para o GitHub de vocês

10. Iniciando localmente

10. Iniciando localmente

  • git init: inicia o versionamento de um repositório local

11. Iniciando remotamente

11. Iniciando remotamente

  • git clone: faz o download de um repositório remoto (e.g. GitHub) para o seu computador (repositório local)

11. Iniciando remotamente

Primeiro, vamos criar uma pasta chamada github

".                               # raiz"
"    ├── home/                   # home"
"        ├── data/               # dados" 
"            ├── github/         # todos os repositorios"

class: inverse, center, middle

E como podemos fazer o clone?

background-image: url(img/github_clone_zip.png) background-size: 900px background-position: 50% 70%

8. Iniciando remotamente: git clone

1. Download diretamente do repositório remoto no formato .zip

background-image: url(img/github_clone_git.png) background-size: 900px background-position: 50% 80%

8. Iniciando remotamente: git clone

2. Usando o terminal para clonar pelo SSH (configurado anteriormente)

# terminal
git clone git@github.com:mauriciovancine/short-course-git-github-rstudio.git

background-image: url(img/git_rstudio.jpg) background-size: 500px background-position: 55% 80%

8. Iniciando remotamente: git clone

3. Usando o RStudio para clonar pelo SSH (configurado anteriormente)

background-image: url(img/rstudio_git_create01.png), url(img/rstudio_project_logo.png) background-size: 900px, 120px background-position: 50% 85%, 95% 10%

8. Iniciando remotamente: git clone

Criar um Projeto R com controle de versão

File > New Project > Version Control

background-image: url(img/rstudio_git_create02.png) background-size: 900px background-position: 50% 85%

8. Iniciando remotamente: git clone

Escolher clonar repositório do GitHub

Git

background-image: url(img/rstudio_git_create03.png) background-size: 750px background-position: 50% 90%

8. Iniciando remotamente: git clone

Preencher:

Repository URL: git@github.com:mauriciovancine/short-course-git-github-rstudio.git

Project directory name: preenchimento automático

Create project as subdirectory of: /home/mude/data/github

class: inverse, center, middle

Se uma janela aparecer, basta digitar “yes” para criar uma autentificação

class: inverse, center, middle

Vamos aguardar o download…

class: inverse, center, middle

Agora sim, vamos começar o versionamento propriamente dito

Dúvidas?

Material de estudo

Livros

Sites

Muito obrigado!