Minicurso GIT
Danilo Pinotti
Observações
Danilo Pinotti
- contato@danilopinotti.com.br
- danilopinotti.com.br
- github.com/danilopinotti
Tecnólogo em Sistemas para Internet (UTFPR
- Guarapuava, 2017)
Arquiteto de Software (PUC MINAS, 2022)
Desenvolvedor Sênior na empresa Let’s
Sistemas (Atualmente)
Desenvolvedor Sênior e Gerente de
Tecnologia na N1 Digital / Ambientz
(Atualmente)
Co-fundador e Desenvolvedor Web/IoT na
Trigy (Atualmente)
Roteiro
● Sistema de controle de versão (VCS)
● Comparativo
● Sobre o Git
● Instalação
● GitHub
● Primeiros passos
● Gerenciamento de índice
● Branches
● Stashes
● Boas práticas
● Repositórios online
Por que usar sistema
para controle de
versão ?
Por que usar sistema para controle de
versão ?
Por que usar sistema para controle de versão ?
● Versionamento
● Armazenamento e segurança contra perda de informações
● Trabalho Simultâneo
● Contar a história do projeto
Organizar o desenvolvimento de software
● Visualizar as mudanças ocorridas em cada arquivo;
● Visualizar o estado do projeto em etapas anteriores;
● Desfazer mudanças;
● Desenvolver funcionalidades em paralelo.
Compartilhar projetos
Utilizar Dropbox, pen drives ou afins para compartilhar código muitas
vezes resulta em dor de cabeça.
- Perda ou falta de arquivos
- Falha na Sincronização
- Confiabilidade
- Velocidade
- Conflitos
● Trabalhos da faculdade/curso
● Controlar arquivos pessoais
● Exemplos e exercícios feitos
● Iniciar o seu portfólio na web
Outras utilizações da ferramenta
Sobre o
Git
O que é GIT
➔ Sistema de controle de versão de arquivos;
➔ Projetos na qual diversas pessoas podem contribuir simultaneamente;
➔ Sem risco de suas alterações serem sobrescritas pela ferramenta;
➔ Rápido.
GIT
O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o
desenvolvimento do kernel Linux
● Git começou em 3 de Abril de 2005;
● Anunciado em 6 de Abril de 2005;
● Tornou-se auto-hospedeiro no dia 7 de Abril de 2005;
● A primeira mescla de arquivos (merge) em múltiplos ramos (branches) foi
realizado em 18 de Abril;
● Torvalds alcançou seus objetivos de performance; em 29 de Abril;
● 16 de Junho, a entrega do kernel 2.6.12 foi gerenciada pelo Git.
Independência de Plataforma
Quem usa GIT ?
Comparativo
Comparativo
Comparação de Desempenho entre Subversion, Mercurial e
Git
Versões Usadas na Comparação
06/2012 07/2016
Subversion 1.7.5 1.9.3
Mercurial 2.2.1 3.8.4
Git 1.7.10 2.9.1
Minicurso GIT Completo (2022)
Análise dos Resultados
Segundo Jakob Nielsen, há três limites de tempo de resposta que percebemos:
● Abaixo de 100ms. Percebido como resposta instantânea.
● Abaixo de 1s. Nota-se o atraso, mas o usuário mantém o fluxo de pensamento.
● Até 10s. Depois disso, os usuários tendem a executar outras atividades enquanto esperam a
operação terminar.
Nenhuma das três ferramentas apresentou um tempo de resposta demorado o suficiente para que
o desenvolvedor tenha motivo para se distrair com outras coisas.
Exemplos
Git
Conceitos
básicos
Git
Primeiros passos: Conceitos básicos
Git != Github
Áreas do Git
● Working area - Ambiente de trabalho
● Staging area - Área de índice
● Local repository - Repositório local
Primeiros passos: Estrutura de um commit
Primeiros passos: Sistema de Snapshot
Primeiros passos: Sistema de Snapshot
Vamos à prática !
Instalação
Instalação do GIT: Linux
Fedora:
#> yum install git-core
Debian/Ubuntu:
#> apt-get install git
Instalação do GIT: Windows
https://git-scm.com/downloads
Primeiros
Passos
Configurações Iniciais
$> git config --global user.name “Bilbo”
$> git config --global user.email “bilbo@gmail.com”
$> ssh-keygen -C “seu@email.com.br”
GitHub
GitHub
● Social Network;
● Free para Open Source Projects;
● Compatível com Mercurial,
Subversion;
● Github educacional;
● Comprado pela Microsoft em 2018;
● CI/CD, Boards, Copilot, etc
GitHub
1. Criar conta;
2. Configurar conta;
3. Criar repositório;
4. Clonar repositório.
Configurações de token (Opcional)
1. Acessar: Profile > Setting > Developers Setting > Personal Access Tokens
2. Gerar token
3. Salvar token para ser utilizado
4. Rodar em seu projeto
$> git remote set-url origin
https://<githubtoken>@github.com/<username>/<repositoryname>.git
Primeiros passos
● Pasta .git
● Arquivos .gitignore e .gitkeep
● Ler mensagens fornecidas pelo Git.
● Oh-my-zsh
Primeiros passos
Inicializando um repositório git:
$> git init
Comando para ajuda:
$> git help <comando>
$> git help init
Primeiros passos: Commits
Verificar estado dos arquivos do projeto:
$> git status
Adicionar modificações na área de staging:
$> git add <files/directories>
Remover modificações da área de índice:
$> git restore --staged <files/directories>
Primeiros passos: Commits
Realizar um commit:
$> git commit -m “Descriçõa do commit”
$> git commit -m “Descrição do commit” --amend
Verificar histórico de commits:
$> git log
Áreas de trabalho do git
Áreas de trabalho do git: $> git add
Áreas de trabalho do git: $> git commit
Gerenciamento
de índice
Desfazer um commit (soft, não recomendado)
Desta forma será revertido o commit mas as alterações contidas nele voltarão
para a área de índice.
Voltar um commit (~1)
$> git reset HEAD~1 --soft
$> git status
Retirar modificações do índice
$> git reset HEAD
Desfazer um commit (hard, não recomendado)
Desta forma será revertido o commit e todas as alterações contidas nele serão
violentamente apagadas.
Voltar um commit (~1)
$> git reset HEAD~1 --hard
$> git status
Reverter um commit (Recomendado)
Há uma terceira forma de voltar as modificações de um commit, bastando
revertê-lo. Reverter um commit significa criar um novo commit aplicando as
modificações opostas.
$> git revert <hash_do_commit>
Alguns comandos básicos
git init Cria um repositório
git status Avalia estado dos arquivos no diretório de trabalho e no
índice
git add Adicionar arquivos ao índice
git restore --staged Retira o arquivo/modificação do índice
git checkout Reinicia arquivo modificado fora do índice (passeio pelo
projeto)
git commit Grava conteúdo do índice e coloca no repositório
git log Mostra o histórico dos commits no repositório
Ignorando arquivos
Arquivo .gitignore
Exemplo:
/.bundle.
/db/*.sqlite3
/log/*.log
/tmp
Forçar o arquivo ignorado a ir para a área de índice
$> git add <file> -f
Fluxo simplificado
Tags
Tags
- O que são ?
- Para o que servem ?
Tags: comandos
Criar Tag
$> git tag <tag_name> -m “<tag_description>”
Ver tags:
$> git tag
Tags: comandos
Checkout na tag:
$> git checkout <tag_name>
Enviar tags para o servidor
$> git push origin --tags
Branches
Branches
O Git permite criar uma linha independente de desenvolvimento no seu projeto.
Isso permite alterações em partes específicas do software sem comprometer o
restante do projeto.
Verificar branches e branch corrente:
$> git branch
Branches: Criando ramificações
Comando para criar uma branch:
$> git branch <branch_name>
Ou
$> git checkout -b <branch_name>
A Branch é criada a partir do commit mais recente.
Branches: Trocar branch corrente
Para “navegar” entre as branches é usado o comando “checkout” da seguinte
forma:
$> git checkout <branch_name>
PS: O comando “checkout” além de permitir navegar entre os commits do projeto,
também é responsável por alterar a branch corrente.
Branches: Unindo ramificações por Pull Request
Quando estamos trabalhando em grupo, é importante termos controle do que será
de fato adicionado à branch principal (master). Para isso, devemos abrir uma PR
(Pull Request) no Github.
- Ver na prática
Branches: Unindo ramificações Localmente
Após desenvolver uma funcionalidade separada do fluxo principal, muitas vezes é
interessante incorporar as modificações no branch master.
Para realizar esta tarefa é utilizado o comando “merge” na branch que será usada
como base.
$> git checkout master
$> git merge <branch_name>
Branches: Deletando ramificações
Após o merge, muitas vezes a branch não será mais necessária localmente,
podendo assim ser apagada.
$> git branch -d <branch_name>
Stashes
Situação
Você está desenvolvendo novas funcionalidades;
Surge um bug em outra parte do sistema para resolver;
Você não quer “commitar”, pois ainda não terminou a adição das funcionalidades.
Stash
➔ 4ª área do git.
➔ Área temporária.
Usando Stashes
Adicionar modificações na área de staging
$> git add .
Mover modificações para uma stash
$> git stash
Ou
$> git stash save “Description”
Re-aplicar modificações movidas para a stash
$> git stash apply
Ou
$> git stash pop
Usando Stashes: comandos
Aplicar stash mais recente e apagá-la:
$> git stash pop
Apagar stash:
$> git stash drop stash@{ID} # => Ver ID através do comando $ git
stash list
Transformar stash em branch:
$> git stash branch <branch_name> [<stash>]
Usando stashes: comandos
Apagar todos os stashes gravados:
$> git stash clear
Boas
Práticas
Sobre commits
- Frases descritivas e diretas;
- Não tenha medo de realizar commits;
- Formato:
- Começar com letra maiúscula;
- No máximo 50 caracteres;
- Não colocar ponto no final;
- Nunca em primeira pessoa.
- Commits devem ser mudanças pequenas e completas no código
- Aplicação deve funcionar sem eles.
Sobre Branches
- NÃO trabalhar diretamente na branch master, ou seja, os commits nela
registrados são feitos apenas via merge;
- As branches podem ser marcadas de acordo com suas finalidades, por
exemplo:
- hotfix/[número-da-versão]
- feature/new-calculator
Repositórios
online
Sincronizar
Enviar modificações para o servidor:
$> git push <remote_name> <branch_name>
$> git push origin master
Baixar atualizações do servidor:
$> git pull <remote_name> <branch_name>
$> git pull origin master
OBS: git pull = git fetch + git merge FETCH_HEAD
Sublime Merge
Sublime Merge
Dúvidas ?
Obrigado
Contato
contato@danilopinotti.com.br
danilopinotti.com.br
github.com/danilopinotti
Referências
https://www.nngroup.com/articles/response-times-3-important-limits/
https://blog.pronus.io/posts/vantagens-e-desvantagens-do-controle-de-versao-distribuido/
https://pronus.io/
https://git-scm.com/

Mais conteúdo relacionado

PDF
Use o git e perca o medo de errar
PDF
Git e GitHub
PPTX
Git - Sistema Descentralizado de Controle de Versões
PDF
Treinamento git - Papos RBSDev
PDF
Starting with Git & GitHub
PPTX
PPTX
Workshop git para iniciantes
PDF
Introduction to Git and GitHub
Use o git e perca o medo de errar
Git e GitHub
Git - Sistema Descentralizado de Controle de Versões
Treinamento git - Papos RBSDev
Starting with Git & GitHub
Workshop git para iniciantes
Introduction to Git and GitHub

Mais procurados (20)

PDF
Git - An Introduction
PPTX
Intro to git and git hub
PPTX
Git One Day Training Notes
PDF
Tutoriel GIT
PDF
git and github
PDF
Git for beginners
PDF
Git Started With Git
PPT
Introduction to Git and Github
PPTX
Source control
PDF
Introdução ao Git
PPTX
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
PPTX
Introduction to git & GitHub
PDF
Git and github 101
PPTX
GIT In Detail
KEY
The everyday developer's guide to version control with Git
PDF
Git e GitHub: Versionamento de Código Fácil
PPTX
Github
PDF
Advanced Git Tutorial
PDF
Git workflows
PDF
Introduction to Git and Github
Git - An Introduction
Intro to git and git hub
Git One Day Training Notes
Tutoriel GIT
git and github
Git for beginners
Git Started With Git
Introduction to Git and Github
Source control
Introdução ao Git
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Introduction to git & GitHub
Git and github 101
GIT In Detail
The everyday developer's guide to version control with Git
Git e GitHub: Versionamento de Código Fácil
Github
Advanced Git Tutorial
Git workflows
Introduction to Git and Github
Anúncio

Semelhante a Minicurso GIT Completo (2022) (20)

PDF
Minicurso GIT 2022 - SENAC
PPTX
Git - Rápido, seguro, eficiente
PDF
EIIFRO2014 - Desenvolvimento Colaborativo de Software
PDF
Controle de versão e colaboração com Git
PDF
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
PDF
GIT Básico
PDF
PDF
Git 101
PDF
Introdução ao Git - Semac 2016
PDF
Descomplicando o controle de versão com git
PDF
Minicurso GIT PET Computação
PDF
Git e Gitlab para Iniciantes
PDF
Controle de versionamento com Git
PDF
Controle de Versões com Git
PDF
Intervalo técnico Git/SVN
PDF
Git ao GitHub
PPTX
Git e github
Minicurso GIT 2022 - SENAC
Git - Rápido, seguro, eficiente
EIIFRO2014 - Desenvolvimento Colaborativo de Software
Controle de versão e colaboração com Git
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
GIT Básico
Git 101
Introdução ao Git - Semac 2016
Descomplicando o controle de versão com git
Minicurso GIT PET Computação
Git e Gitlab para Iniciantes
Controle de versionamento com Git
Controle de Versões com Git
Intervalo técnico Git/SVN
Git ao GitHub
Git e github
Anúncio

Mais de Danilo Pinotti (17)

PDF
Open Source: Ferramentas Gratuitas Incríveis
PDF
Logs: A Chave para um Diagnóstico Eficiente e Boas Práticas de Monitoramento
PDF
Segurança Digital Pessoal e Boas Práticas
PDF
Design Pattern: Pending Objects com exemplos
PDF
Padrões de Projeto: Proxy e Command com exemplo
PDF
Boas práticas de programação com Object Calisthenics
PDF
Do Zero à Produção
PDF
Site estático + Hospedagem Gratuita.pdf
PPTX
Vue 2 - Componentes [2 de 2 - 2020]
PPTX
Vue - Básico sobre Vue [1 de 2 - 2020]
PDF
Code Review
PDF
Minicurso de Expressões Regulares (REGEX)
PDF
Talk sobre testes automatizados. Parte 1/2
PDF
O básico sobre Vue 2. Talk Vue Básico 1/3
PDF
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
PDF
Alguns Helpers do Laravel 5.6
PDF
Deixando aplicações Laravel mais rápidas
Open Source: Ferramentas Gratuitas Incríveis
Logs: A Chave para um Diagnóstico Eficiente e Boas Práticas de Monitoramento
Segurança Digital Pessoal e Boas Práticas
Design Pattern: Pending Objects com exemplos
Padrões de Projeto: Proxy e Command com exemplo
Boas práticas de programação com Object Calisthenics
Do Zero à Produção
Site estático + Hospedagem Gratuita.pdf
Vue 2 - Componentes [2 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]
Code Review
Minicurso de Expressões Regulares (REGEX)
Talk sobre testes automatizados. Parte 1/2
O básico sobre Vue 2. Talk Vue Básico 1/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Alguns Helpers do Laravel 5.6
Deixando aplicações Laravel mais rápidas

Último (20)

PDF
resumo de instalação de placa arduino em jardim vertical para fertirrigação
PPT
Redes de Computadores - apresenta~~ç]ao para estudos
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PDF
Capacitação em Logística – Instituto Federal
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
PDF
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPT
Apresentacao Do Trabalho de Inteligencia
PPTX
Modelo para Qualificação de Mestrado - Tecnologia da Informação
PPTX
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
PDF
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PPTX
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
PPTX
CONHECENDO O SISTEMA FEDORA - MANUAL DE USO
PPTX
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
PPTX
ccursoammaiacursoammaiacursoammaia123456
resumo de instalação de placa arduino em jardim vertical para fertirrigação
Redes de Computadores - apresenta~~ç]ao para estudos
Padrões de Beleza I - Estética Corporal e Saúde
Capacitação em Logística – Instituto Federal
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
Processos no SAP Extended Warehouse Management, EWM100 Col26
Apresentacao Do Trabalho de Inteligencia
Modelo para Qualificação de Mestrado - Tecnologia da Informação
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
Processamento da remessa no SAP ERP, SCM610 Col15
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
CONHECENDO O SISTEMA FEDORA - MANUAL DE USO
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
ccursoammaiacursoammaiacursoammaia123456

Minicurso GIT Completo (2022)