Introdução ao
Git/GitHub
GILSON OLIVEIRA JR
24/02/2018
Nossa jornada no dia de hoje
Saber se localizar no mundo de controle de versão
Integrando o controle de versão no seu fluxo de trabalho individual
Colaborando em projetos maiores com o Git/Github
Passo 1:
Controle de versão
SE LOCALIZANDO NO CONTROLE DE VERSÃO
Controle de Versão
TIPOS E SOFTWARES RELACIONADOS
.old
_backup
pasta v1, v2, v3
E-mail pra vc mesmo
QUEM NUNCA???
Porque Controlar Versão?
Manutenção de
um histórico
Backup Colaboração Controle de
Atividades
Paralelas
Automação de
Implementação
Métodos de Controle de Versão
Manual Auxiliado por Software
Por que o GIT?
RAZÕES PORQUE ESCOLHEMOS O GIT E
UM POUCO DO SEU HISTÓRICO
Porque o Git?
Porque o Git?
• Velocidade
• Design Simples
• Desenvolvimento não linear
• Totalmente distribuído
• Robusto (capaz de lidar com projetos de grande porte)
Um pouco do Histórico
1991 - 2002
Patches e Diretórios
compartilhados
2002 - 2005 2005 - ...
Passo 2:
Usando o Git no seu fluxo de
trabalho
USANDO O GIT NOS SEUS PROJETOS
Primeiros passos
O QUE PRECISAMOS SABER ANTES DE
TRABALHAR COM O GIT
Conceitos Git
Outros sistemas
guardam alterações
em arquivos, o Git
trabalha com fotos
dos arquivos no
projeto
Integridade
Tudo é verificado
com CHECK-SUM
com SHA-1
Local
Quase todas as
operações no Git
são locais. Logo
você pode
trabalhar offline e
testar seu código
tranquilamente
Somente adição
de dados
Git geralmente
adiciona dados no
seu controle, isso
infere que quase
sempre se pode
reverter qualquer
ação
Configuração da ferramenta 3 níveis
Nível Descrição Prioridade
Sistema Configurações comuns a todos usuários do
sistema (computador) 3
Global Configurações de um usuário específico do
sistema (o que está logado) 2
Local Configurações específicas para o projeto que
você está trabalhando 1
IMPORTANTE: Configurações locais (projeto) tem prioridade sobre
configurações globais e de sistema
Prática 1/1
• Criação de um usuário no GitHub
• Configuração básica do seu ambiente após instalação do Git
localmente
• COMANDOS:
• git config
Pratica 1/2
Comandos que iremos explorar nessa sessão:
• Iniciando um repositório:
• git init
• git clone
Os três estados Básicos
Essa é uma das partes mais importantes de se saber antes de começar a trabalhar com o Git.
No detalhe...
Fonte: https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository
Pratica 1/3
• Adicionando arquivos na área de staging
• git add
• Verificando o status do nosso diretório de trabalho:
• git status
• Fazendo commits
• git commit
• git commit -m “mensagem”
• Fazendo uma correção
• git commit --amend
Abrindo a caixa de Ferramentas
Pratica 1/4
• Visualizando as diferenças entre arquivos
• git diff
• Visualizando histórico de alterações
• git log
Limpando a bagunça
Parte Prática 1/5
• git commit –amend
• git reset
• git checkout --
Branching
& Merging
Por que usar branches?
Base do Código Funcionando (Master sugestão)
Base do Código em Produção
Base do Código emTeste
Base do Código em Desenvolvimento
Playground para novas funcionalidades
Estabilidade
Pratica 1/6
• git branch
• git checkout
• git merge
O que é um commit?
Um branch nada mais é que um ponteiro
para um commit.
novoBranch
Criando um novo branch e fazendo um novo
commit...
Uma historinha bem comum...
1
3
2
4
Exemplos de Branches de vida longa
Stashing || Commiting?
Parte pratica 1-7
• git stash save
• git stash list
• git stash pop
Passo 3:
Colaboração
USANDO O GIT NOS SEUS PROJETOS ENVOLVENDO VÁRIOS
DESENVOLVEDORES
Trabalhando em equipe
OU +
Repositório Remoto (DVSC)
Tudo bem trabalhar local...
mas em algum momento
temos que sincronizar as
bases
Serviços Online
...
Por que o GitHub
O que é o GitHub
“A Web-based Git repository hosting
service, which offers all of the distributed revision
control and source code management (SCM)
functionality of Git as well as adding its own features
was launched. GitHub provides a Web-based
graphical interface and desktop as well as
mobile integration. It also provides access
control and several collaboration features such as
bug tracking, feature requests, task
management, and wikis for every
project.”
Servidor de repositório
InterfaceWeb
Controle de acesso
Gestão de Bug
Requisições de
Funcionalidades
Gestão de tarefas
Wiki para os projetos
Mona, o Octocat
Curiosidades
• Foi criado em 2007, pelo mesmo criador do
passarinho doTwitter – Oxley
https://www.idokungfoo.com/
https://dribbble.com/simonox
Parte Prática 2/1
• Criando um repositório
• Configuração de acessos
• Configurando a lista de .gitignore
Como o git trabalha com remotos
Tracking Branches
• Tracking Branches são links entre branches locais e remotos
• Listando:
• git branch -vv
• Removendo relacionamentos:
• Git branch --unset-upstream
• Criando um novo relacionamento:
• git checkout --track origin/<branchname>
• git push –u origin <nomebranch>
Fork e Pull Requests
https://guides.github.com/introduction/flow/
Parte pratica 2/2
• Fork
• Create a pull request
• git remote add
• git remote show
• git branch -vv
• git fetch push pull
• Criando pull requests
• Merge com conflitos
Referências
• https://git-scm.com
• https://help.git.com
• https://guides.github.com/
• Youtube – vários videos
• Google – várias buscas

Workshop de Introdução ao Git GitHub

  • 1.
  • 2.
    Nossa jornada nodia de hoje Saber se localizar no mundo de controle de versão Integrando o controle de versão no seu fluxo de trabalho individual Colaborando em projetos maiores com o Git/Github
  • 3.
    Passo 1: Controle deversão SE LOCALIZANDO NO CONTROLE DE VERSÃO
  • 4.
    Controle de Versão TIPOSE SOFTWARES RELACIONADOS
  • 5.
    .old _backup pasta v1, v2,v3 E-mail pra vc mesmo QUEM NUNCA???
  • 6.
    Porque Controlar Versão? Manutençãode um histórico Backup Colaboração Controle de Atividades Paralelas Automação de Implementação
  • 7.
    Métodos de Controlede Versão Manual Auxiliado por Software
  • 8.
    Por que oGIT? RAZÕES PORQUE ESCOLHEMOS O GIT E UM POUCO DO SEU HISTÓRICO
  • 9.
  • 10.
    Porque o Git? •Velocidade • Design Simples • Desenvolvimento não linear • Totalmente distribuído • Robusto (capaz de lidar com projetos de grande porte)
  • 11.
    Um pouco doHistórico 1991 - 2002 Patches e Diretórios compartilhados 2002 - 2005 2005 - ...
  • 12.
    Passo 2: Usando oGit no seu fluxo de trabalho USANDO O GIT NOS SEUS PROJETOS
  • 13.
    Primeiros passos O QUEPRECISAMOS SABER ANTES DE TRABALHAR COM O GIT
  • 14.
    Conceitos Git Outros sistemas guardamalterações em arquivos, o Git trabalha com fotos dos arquivos no projeto Integridade Tudo é verificado com CHECK-SUM com SHA-1 Local Quase todas as operações no Git são locais. Logo você pode trabalhar offline e testar seu código tranquilamente Somente adição de dados Git geralmente adiciona dados no seu controle, isso infere que quase sempre se pode reverter qualquer ação
  • 15.
    Configuração da ferramenta3 níveis Nível Descrição Prioridade Sistema Configurações comuns a todos usuários do sistema (computador) 3 Global Configurações de um usuário específico do sistema (o que está logado) 2 Local Configurações específicas para o projeto que você está trabalhando 1 IMPORTANTE: Configurações locais (projeto) tem prioridade sobre configurações globais e de sistema
  • 16.
    Prática 1/1 • Criaçãode um usuário no GitHub • Configuração básica do seu ambiente após instalação do Git localmente • COMANDOS: • git config
  • 17.
    Pratica 1/2 Comandos queiremos explorar nessa sessão: • Iniciando um repositório: • git init • git clone
  • 18.
    Os três estadosBásicos Essa é uma das partes mais importantes de se saber antes de começar a trabalhar com o Git.
  • 19.
  • 20.
    Pratica 1/3 • Adicionandoarquivos na área de staging • git add • Verificando o status do nosso diretório de trabalho: • git status • Fazendo commits • git commit • git commit -m “mensagem” • Fazendo uma correção • git commit --amend
  • 21.
    Abrindo a caixade Ferramentas
  • 22.
    Pratica 1/4 • Visualizandoas diferenças entre arquivos • git diff • Visualizando histórico de alterações • git log
  • 23.
  • 24.
    Parte Prática 1/5 •git commit –amend • git reset • git checkout --
  • 25.
  • 26.
    Por que usarbranches? Base do Código Funcionando (Master sugestão) Base do Código em Produção Base do Código emTeste Base do Código em Desenvolvimento Playground para novas funcionalidades Estabilidade
  • 27.
    Pratica 1/6 • gitbranch • git checkout • git merge
  • 28.
    O que éum commit?
  • 29.
    Um branch nadamais é que um ponteiro para um commit. novoBranch
  • 30.
    Criando um novobranch e fazendo um novo commit...
  • 31.
    Uma historinha bemcomum... 1 3 2 4
  • 32.
    Exemplos de Branchesde vida longa
  • 33.
  • 34.
    Parte pratica 1-7 •git stash save • git stash list • git stash pop
  • 35.
    Passo 3: Colaboração USANDO OGIT NOS SEUS PROJETOS ENVOLVENDO VÁRIOS DESENVOLVEDORES
  • 36.
  • 37.
    Repositório Remoto (DVSC) Tudobem trabalhar local... mas em algum momento temos que sincronizar as bases
  • 38.
  • 39.
    Por que oGitHub
  • 40.
    O que éo GitHub “A Web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features was launched. GitHub provides a Web-based graphical interface and desktop as well as mobile integration. It also provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.” Servidor de repositório InterfaceWeb Controle de acesso Gestão de Bug Requisições de Funcionalidades Gestão de tarefas Wiki para os projetos
  • 41.
    Mona, o Octocat Curiosidades •Foi criado em 2007, pelo mesmo criador do passarinho doTwitter – Oxley https://www.idokungfoo.com/ https://dribbble.com/simonox
  • 42.
    Parte Prática 2/1 •Criando um repositório • Configuração de acessos • Configurando a lista de .gitignore
  • 43.
    Como o gittrabalha com remotos
  • 44.
    Tracking Branches • TrackingBranches são links entre branches locais e remotos • Listando: • git branch -vv • Removendo relacionamentos: • Git branch --unset-upstream • Criando um novo relacionamento: • git checkout --track origin/<branchname> • git push –u origin <nomebranch>
  • 45.
    Fork e PullRequests https://guides.github.com/introduction/flow/
  • 46.
    Parte pratica 2/2 •Fork • Create a pull request • git remote add • git remote show • git branch -vv • git fetch push pull • Criando pull requests • Merge com conflitos
  • 47.
    Referências • https://git-scm.com • https://help.git.com •https://guides.github.com/ • Youtube – vários videos • Google – várias buscas

Notas do Editor

  • #3 Conceito e Prática
  • #7 Perguntar para que mais é usado
  • #12 1) Falar sobre o maior projeto de colaboração do mundo: Desenvolvimento do Linux 2) Uso da ferramenta proprietária BitKeeper 4) In 2005, the relationship between the community that developed the Linux kernel and the commercial company that developed BitKeeper broke down, and the tool’s free-of-charge status was revoked. This prompted the Linux development community (and in particular Linus Torvalds, the creator of Linux) to develop their own tool based on some of the lessons they learned while using BitKeeper. Some of the goals of the new system were as follows: Speed Simple design Strong support for non-linear development (thousands of parallel branches) Fully distributed Able to handle large projects like the Linux kernel efficiently (speed and data size)
  • #17 Criar conta no GitHub (chamar alguém que não tenha conta para criar na hora) - alertar sobre o e-mail no-reply Configurar nome de usuário git config --global user.name "nome"   Nota: se não informar o nível, ele entende como configuração local   Configurar e-mail (lembrar de informar o e-mail no reply) git config --global user.email email@email.com Configurar editor git config core-editor
  • #26 Vamos entrar em uma das partes mais legais do GIT agora. E para isso temos que entrar um pouco mais a fundo e saber o que é um commit.
  • #27 Geralmente não queremos mexer no código de produção, ou base estável do meu código (se pensarmos em releases alpha, beta, etc).
  • #29 Um commit é um ponteiro para um snapshot, que por sua vez é uma arvore de arquivos. Esses commits podem ter relação com outros commits.
  • #30 Ao criar um novo branch, estamos criando um novo ponteiro.