Good
![](https://git-scm.com/images/logos/downloads/Git-Logo-2Color.png)
![](https://cdn.arstechnica.net/wp-content/uploads/2017/02/git-branching.png)
WTF is GIT?
![](https://bunkerchan.xyz/.media/32b2c86b800fafa05e9c7e3b72a0b431-imagejpeg.jpg)
É um sistema de controle de versão (VCS) distribuído
Centralizado | Distribuído | |
---|---|---|
Deltas | subversion | mercurial |
DAGs | bitkeeper | git |
![](https://svn.apache.org/repos/asf/subversion/svn-logos/images/tyrus-svn2.png)
![](https://git-scm.com/images/logos/downloads/Git-Icon-1788C.png)
![](https://upload.wikimedia.org/wikipedia/commons/7/7d/Bitkeeper-logo.png)
![](https://pics.me.me/edit-2-php-php-edit2-php-edit2-php-backup-php-edit2-php-backup-php-backup-php-edit2-php-backup-php-backup-php-backup-php-19738001.png)
![](https://i.redd.it/05b6u19pseoz.png)
![](http://www.quickmeme.com/img/9c/9c5a683d56fee909bc4f323fef368cd05a55c0a5006b8c7a956743e0c27675c1.jpg)
- Rápido;
- Simples;
- Suporte robusto para várias branches em paralelo;
- Totalmente distribuido;
- Capaz de suportar projetos gigantescos como o Kernel do Linux;
- GIT não deleta!
Por quê?
![](https://i.kym-cdn.com/photos/images/original/000/343/462/79a.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/265645/images/5581744/tests.png)
Workflow
![](https://s3.amazonaws.com/media-p.slid.es/uploads/265645/images/5581610/test.png)
Usando o GIT
Configurações
Configurar o git é algo extremamente complexo...
$ git config --global user.name "DarthVader"
$ git config --global user.email darthvader@empire.org
Sua identidade
Criando repositórios
$ git init
Cria um repositório local
$ git clone <url-do-repositorio-git>
$ git clone https://detailyang/awesome-cheatsheet.git # https
$ git clone git@github.com:detailyang/awesome-cheatsheet.git # ssh
Clona um repositório existente
A tabuada do GIT
$ git add README.md # adicionar um arquivo ao repo
$ git rm main.c # remover um arquivo do repo
$ git commit -am 'First commit' # gravar as mudanças realizadas
$ git log # exibe o log de commits realizados
$ git show # exibe os commits
$ git diff # exibe a diferença entre o que foi modificado e o que está "commitado"
Deu ruim!!!
$ git checkout -- arquivo.txt # reverter o arquivo para último "savepoint"
$ git revert <SHA-do-commit> # reverter um commit
![](http://www.bromygod.com/wp-content/uploads/2012/08/not-bad-meme.jpg)
Gitflow
Maximizando o poder do git
![](https://s3.amazonaws.com/media-p.slid.es/uploads/265645/images/5581957/git-flow-timeline.png)
Branches
$ git branch teste1 # cria uma nova branch a partir da HEAD
$ git checkout -b teste1 # cria uma branch e troca o contexto para ela
Componentes do git flow
- Branch MASTER
- Branch DEVELOP
- Branch FEATURE-X
- Branch RELEASE
- Branch HOTFIX
Solução de conflitos
![](https://media.giphy.com/media/l2JeaO7bwt9QLyoiA/giphy.gif)
![](https://media.giphy.com/media/NBBlHLqR00oGk/giphy.gif)
Links Úteis
- Git Flight Rules
- GitKraken Gitflow
- VSCode extension: GitLens, GitHistory
- Goal Kicker books
Obrigado!
/deadpyxel
![](https://s3.amazonaws.com/media-p.slid.es/uploads/265645/images/5317524/GitHub-Mark-64px.png)
Git Good
By Robson Cruz
Git Good
Apresentação utilizada no mini-treinamento de Git e Gitflow para a EJCOMP
- 151