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
- 723