Git e Github
101
Instrutor
- Kaleb Alves, 22 anos
- Fã e contribuidor do Open Source
- Fã de teoria das categorias, DSP, Tolkien, cyberpunk

@forgondolin
@kalves_rohan
Sumário
Git
- O que é
- Como funciona
- Branches
- Utilização
- Versionamento Semântico
- Interfaces para versionamento
- Outras ferramentas de versionamento
- Low Level Git
- Exemplos
- Exercícios práticos
Github
- O que é
- Como funciona
- Exemplos de ferramentas de repositório
- Utilização
- Design patterns
- Github Actions
- Github projects, teams
- Exemplos
- Exercícios práticos
O que significa "versionar"?
-
SCM
-
GNU RCS
-
CVC vs DVC


O que é o Git?
-
É um VCS com foco em "branching" e snapshots
-
Criado por Linus Torvalds e mantido por Junio Hamano
-
Um assunto recorrente em rodas de discussão
-
Open Source - GPLv2


Como funciona?

Como funciona?
-
VCS é um SCM ?
-
DAG
-
Snapshots

Como funciona?


Como funciona?
-
Base de dados local
-
Alta integridade
-
3 estados


Branches
-
Criar uma branch é algo bem rápido no Git
-
Assim como criar, descartar também é fácil
-
Checksum dos commits

Branches
-
Exemplificando a relação entre ponteiros, HEAD e objetos inerentes







Utilização
-
É só baixar e instalar um executável
-
Após isso, é só ter do seu lado uma lista de comandos bash, certo?

Utilização
Merge e seus conflitos

Utilização
Rebase

Questão: Até onde é válido utilizar o rebase?
Utilização
Fast-foward merge

Utilização
Squash

Utilização
Workflow



Versionamento Semântico (SemVer)
Dado um número de versão MAJOR.MINOR.PATCH, incremente a: 1. versão Maior(MAJOR): quando fizer mudanças incompatíveis na API, 2. versão Menor(MINOR): quando adicionar funcionalidades mantendo compatibilidade, e 3. versão de Correção(PATCH): quando corrigir falhas mantendo compatibilidade.Rótulos adicionais para pré-lançamento(pre-release) e metadados de construção(build) estão disponíveis como extensão ao formato MAJOR.MINOR.PATCH.
git tag x.y.z "commit-id"
Interfaces para versionamento
- Qgit
- Git Force
- Gitg
- SourceTree
- GitKraken*
- SmartGit

Outras ferramentas de versionamento
- Subversion - CVCS
- Mercurial -DVCS
- TFS VC - CVCS
- CVS - CVCS
- Monotome
- darcs* - DVCS
- Bazaar - DVCS

Low Level Git
- Protocolos de comunicação: local, ssh, http, git;
- Plumbing and Porcelain;
- Hooks;
- Chave-valor

find .git/objects -f
echo 'blob teste' | git hash-object -w --stdin
Exemplos
git init
git clone
git status
git add
git commit
git push
git log --oneline --decorate --graph --all
git branch
git checkout
git merge
git remote
scp -r my_project.git user@my_vm:/srv/git
git bisect
Referências
Github

25/06/20
Github

Recapitulando
-
Usos "diários" de um versionador
-
Git como histograma
-
Gitkraken
-
cooperação múltipla em um projeto

Sumário
- O que é
- Como funciona
- Exemplos de ferramentas de repositório
- Utilização
- Design patterns
- Github Actions
- Github Insights
- Github Desktop
- Github Pages
- Github Packages
- Github projects, teams
- Integrações

fonte: Github
O que é e como funciona
-
"cloud-based repository hosting"
-
Comprado pela Microsoft em 2018
-
Provavelmente o repositório cloud com mais integrações no mercado

Diferença do Github para outras ferramentas de repositório






Utilização
- Criar usuário
- Criar repositório
- Criar Time / Organização
- Gerando chave SSH

Desing Patterns
- Repositório do Github deixa bem visível qual padrão está sendo usado pelo time
- Além de mostrar as tecnologias utilizadas, facilitando a ferramenta de busca

Github Insights

Github Desktop

Github Packages

Integrações
- Docker hub
- Gitbooks
- Editores de texto
- Slack
- Jira
- ...
Github API
https://api.github.com/users/forgondolin/repos
Forking e colaboração
Algumas vezes você pode colaborar com algum projeto aberto mesmo não participando do time de desenvolvimento
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
git remote -v
Github Pages
Um domínio gratuito para publicação de páginas estáticas
Muito usado para portfólios ou projetos pequenos / descrição / desafios
Github Actions
Nova feature do Github
Pipeline para CI/CD de seus projetos
Compete com outras plataformas como: Gitlab CI/CD e Azure Pipelines

Demo Action
Utilizando Hugo ou Jekyll...
Publicar uma página web no domínio do github, utilizando github actions

Git e Github
By Kaleb Alves
Git e Github
Treinamento de Git e Github
- 864