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

  1. O que é
  2. Como funciona
  3. Branches
  4. Utilização
  5. Versionamento Semântico
  6. Interfaces para versionamento
  7. Outras ferramentas de versionamento
  8. Low Level Git
  9. Exemplos
  10. Exercícios práticos

Github

  1. O que é
  2. Como funciona
  3. Exemplos de ferramentas de repositório
  4. Utilização
  5. Design patterns
  6. Github Actions
  7. Github projects, teams
  8. Exemplos
  9. 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)

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

 

  1. O que é
  2. Como funciona
  3. Exemplos de ferramentas de repositório
  4. Utilização
  5. Design patterns
  6. Github Actions
  7. Github Insights
  8. Github Desktop
  9. Github Pages
  10. Github Packages
  11. Github projects, teams
  12. 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