class: center, middle, inverse, title-slide # Git: o que é um sistema de controle de versão? ### R-Ladies São Paulo ### Atualizado em 17/10/2020 --- class: middle, center, inverse
<!-- inicio font awesome --> <script src="https://kit.fontawesome.com/1f72d6921a.js" crossorigin="anonymous"></script> <!-- final font awesome --> <!-- inicio github buttons --> <script async defer src="https://buttons.github.io/buttons.js"></script> <!-- final github buttons --> <img src="https://pics.me.me/soy-una-orca-quenormaltodo-esta-camiseta-me-representa-trabajo-final-docx-38350746.png" width="60%" style="display: block; margin: auto;" /> --- class: hide-logo # Git é uma ferramenta de controle de versão de arquivos - Um sistema de controle de arquivos nada mais é do que um sistema que registra alterações em um arquivo ou conjunto de arquivos ao longo do tempo para que você possa recuperar versões específicas posteriormente. - Ele permite que você reverta os arquivos para um estado anterior, reverta todo o projeto para um estado anterior, analise as alterações feitas ao longo do tempo, veja quem modificou pela última vez algo que pode estar causando um problema, quem introduziu um problema nos seus arquivos/códigos e muito mais! --- class: hide-logo # Se o git é o coração do Git o hub do GitHub é a alma! - GitHub é a principal rede social dos desenvolvedores e onde podemos compartilhar tudo o que versionamos usando o git. - Além disso é onde contrubuimos com outros projetos, fazemos perguntas e trocamos conhecimentos com outras pessoas, pois podemos seguir pessoas e acompanhar o que fazem ou com quem se comunicam. --- class: hide-logo # Fluxo de trabalho e conceitos-chave - Repositório: (ou só repo) é uma coleção de arquivos (geralmente de códigos) - Local repository: (repositório local) é uma coleção de arquivos mantidos em nosso computador pessoal - Remote repository: repositório remoto é a famosa nuvem, ou mais precisamente os servidores do GitHub para o qual enviamos o conteúdo de nosso repositório local para que possamos compartilhar com outras pessoas - Working directory: pasta/diretório onde mantemos nossa coleção de arquivos e onde trabalhamos com eles. --- # Fluxo de trabalho <img src="./img/prints/diagrama_git.png" width="90%" style="display: block; margin: auto;" /> --- class: hide-logo ### Um arquivo do seu working directory pode assumir 3 estados possíveis: - Ele pode ser alterado: ou seja, os arquivos com as mudanças atualizadas ainda não estão armazenados no repositório local. - Ele pode estar na área de stag (staging area): ou seja, os arquivos com as mudanças atualizadas estão marcados para serem commitados no repositório local, mas ainda não foram commitados - Ele pode ser commitado (commit area): ou seja, as alterações feitas em seu arquivo são armazenadas com segurança no repositório local. --- #### Ciclo de comandos básicos (parte 1) - `git config --global user.name "YOUR_USERNAME" ` - `git config --global user.email "bruna@rladies.com"` - `git config --global --list` # To check the info you just provided - Adicionar chave SSH e criar um arquivo README.md (logo mais) - `git status` #lista todos arquivos presentes no seu repositório --- #### Ciclo de comandos básicos (parte 2) - `git add <your_file>` #add um ou mais arquivos p/ área de stagging - `git commit -m "First commit"` #commita arquivos da área de stagging - Cria repo remoto na sua conta do GitHub (copie o endereço dela) - `git remote add origin remote_repo_URL` #linka local e remote repos - `git push -u origin master` #manda arquivos commitados p/ repo remoto --- class: hide-logo # Comandos que nos ajudar neste 1º ciclo - `git diff` #mostra alterações não commitadas - `git checkout file_name` #reverte último commit - `git log` #historico de commits - `git reset HEAD SHA_key` - `git branch outra_versao` # cria uma segunda versão do seu projeto para termos duas versões de um mesmo arquivo. - `git clone remote_repository_URL` #copia o conteúdo de um remote repo para nossa máquina --- ## Branch É uma série independente de *commits*, que pode ser usada para criar novas funcionalidades, etc. *Branch master*: é o ramo principal Demais *branches*: derivam da master e podem retornar a ela depois <img src="img/branch.jpeg" width="50%" style="display: block; margin: auto;" /> --- ## Commit É o ato de enviar / fazer um upload dos códigos na sua *branch*. Sempre precisa de uma mensagem breve explicando o que foi feito. Dica: Faça *commits* incrementais! <img src="img/commit.png" width="80%" style="display: block; margin: auto;" /> --- ## Checkout Muda para outra *branch*. Antes de trocar de branch verifica se há alteração não "commitada" nos arquivos, se existir, ele dá um alerta e não troca de branch até você resolver o que fazer. <img src="img/checkout.jpg" width="60%" style="display: block; margin: auto;" /> --- ## Issue Usada para: - discutir funcionalidades, - reportar e monitorar bugs, - sugerir melhorias, - etc. <img src="https://media.giphy.com/media/ekje2HEQqJW7cE9SIJ/giphy.gif" width="50%" style="display: block; margin: auto;" /> --- ## Wiki Desenvolvido originalmente por [Ward Cunningham](https://pt.wikipedia.org/wiki/Ward_Cunningham) é um importante recurso de documentação dos projetos. <br> <br> <img src="img/wiki.gif" width="50%" style="display: block; margin: auto;" /> --- ## Readme.md Arquivo que apresenta o projeto e informações adicionais. - como instalar, - como usar o código, - como fazer contribuições com o projeto, - etc. <img src="https://media.giphy.com/media/l4FGJfimoW3Cl6gDK/giphy.gif" width="50%" style="display: block; margin: auto;" /> --- class: center, middle ## Dicas .center[[GIT CHEAT SHEET](https://education.github.com/git-cheat-sheet-education.pdf)] <img src="img/zine.png" width="40%" style="display: block; margin: auto;" /> --- ## Comentários - Você pode usar o Git através: - __Linha de comando__ : - [git](https://git-scm.com/) - terminal do RStudio - __Interfaces gráficas__: - [Git Kraken](https://www.gitkraken.com/git-client) - [GitHub Desktop](https://desktop.github.com/) - [Sourcetree](https://www.sourcetreeapp.com/) - Git Pane do RStudio - Entre outros! Logo apresentaremos como utilizar através do RStudio, mas escolha o que é mais confortável para você :) - Independente de qual ferramenta você escolher, é importante qual comando do Git equivale a um "botão" na interface gráfica. É muito importante entender as equivalências! --- class: center, middle ## Linha de comando ou interface gráfica? ## Use o que for melhor para **você**! <img src="https://media0.giphy.com/media/dNgK7Ws7y176U/giphy.gif" width="50%" style="display: block; margin: auto;" />