SlideShare ist ein Scribd-Unternehmen logo
1 von 82
Downloaden Sie, um offline zu lesen
Introdução ao Git
1. Quem sou eu?
$ git config user.name "Victor Hugo Souza"
$ git config user.email "vhbsouza@gmail.com"
$ git config user.github "/vhbsouza"
$ git config user.work "Accurate Software Ltda."
$ git config user.skills "Java, Ruby, PHP, Angular, Git"
2. Agenda
3. O que é o Git? 
3.1 Controle de Versão
3.1.1 Sistema de Controle de Versão Local
 Como trabalhar em equipe se a ferramenta é pra uso
local?
3.1.2 Sistema de Controle de Versão
Centralizado
 Ponto único de falha já que qualquer problema no
servidor, perde‐se tudo!
3.1.3 Sistema de Controle de Versão
Descentralizado
 Cada cliente possui uma cópia completa do
repositório!
3.2 História do
Eu sou um desgraçado egocêntrico, então batizo
todos os meus projetos com meu nome. Primeiro
Linux, agora Git.
-- Linus Torvalds
“
“
 
2005
3.3 Principais Caracterís cas
3.3.1 Snapshots ao invés de patches
Patches (Lista de Mudanças entre arquivos)
3.3.1 Snapshots ao invés de patches
Snapshots ("Foto" do repositório inteiro)
3.3.2 Maioria das operações são
locais
 Sem LOCK em arquivos   
 Sem necessidade de rede para:  
COMMITS, LOG, DIFF
3.3.3 Git   integridade dos dados
Checksum ‐ Hash SHA‐1 
24b9da6552252987aa493b52f8696cd6d3b00373
3.3.4 Os Três Estados
Estado Área Descrição
Modified
Working
Directory
Arquivo modi cado que
ainda não foi consolidado
Staged
Staging
Area
Arquivo modi cado que é
selecionado para próx.
consolidação "Commit"
Commited
HEAD
Git
Directory
Arquivos consolidados
"commitados" no
Repositório
3.3.4 Os Três Estados
3.4 Vantagens e Desvantagens
Vantagens Desvantagens
Rápido Maior complexidade
Independência
(Descentralizado)
Maior necessidade de
estudo para um uso efetivo
Rami cações
Tech Talk: Linus Torvalds on git
4. Instalação
4.1 Windows 
Git for Windows
h ps://git‐for‐windows.github.io/
4.2 OSX
Homebrew
$ brew install git
h p://brew.sh/
4.3 Linux   
Debian/Ubuntu
$ sudo apt-get install git
Fedora
$ dnf install git
ArchLinux
$ pacman -S git
Demais distros ...
https://git-scm.com/download/linux
4.3.1 Auto Completar
$ cd ~
$ wget "https://goo.gl/hhzDgN" -O ".git-completion.bash"
$ echo "source ~/.git-completion.bash" >> .bashrc
5. Github
h p://github.com
Adeus enviar código por
5.1 Criar Conta
5.2 Criar Repositório
5.3 Adicionar chave SSH no Github
$ ls -al ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa
$ sudo apt-get install xclip
$ xclip -sel clip < ~/.ssh/id_rsa.pub
Inserir em Se ngs > SSH and GPG keys > Add
SSH key
5.4 Github Students Pack
h ps://educa on.github.com/pack
6. Git Básico
6.0 Ajuda
$ git help [comando]
ex.:  git help init
6.1 Configurar Git
$ git config [options]
.gitconfig
6.1.1 Configurar Usuário
$ git config --global user.name "Linus Torvalds"
$ git config --global user.name "linus@linux.com"
6.1.2 Cache ‐ Login
$ git config --global credential.helper cache
$ git config --global credential.helper 
'cache --timeout=7200'
Adicione --global para de nir escopo de
con guração à nível de usuário.
6.1.3 Configurar MERGETOOL
$ git config --global merge.tool meld
6.1.3 Verificar configuração
$ git config --global user.name
> Victor Hugo Souza
6.1.3 Listar Configurações
$ git config --list
user.name=Victor Hugo Souza
user.email=victor.souza@accurate.com.br
merge.tool=meld
credential.helper=cache --timeout=36000
log.decorate=short
color.ui=auto
color.interactive=auto
color.diff=auto
color.branch=auto
color.status=auto
pager.show-branch=true
format.numbered=auto
push.default=simple
--global também pode ser adicionado aqui.
6.2 Criar Repositório
Inicia repositório git dentro do diretório
$ git init
.git
6.3 Clonar Repositório
Faz cópia do repositório
$ git clone [options]
[url_do_repositorio] [diretorio]
HTTPS  ou  SSH
6.3 git clone [op ons] [diretorio]
Opção Descrição
--
branch
Clona a partir de branch especí ca
--
depth
Clona até um nivel de "profundidade" no
histórico do repositório
Se não for especi cado diretório ele utilizará o
padrão
6.4 Add
Adiciona arquivos para próximo snapshot(commit)
$ git add [options] <pathspec>
6.4 git add [op ons] <pathspec>
git add trabalho_*.c
Opção Descrição
-n,
--dry-run
Simula o que aconteceria se o comando
fosse executado
-p,
--patch
Adiciona interativamente
trechos de um arquivo
-A, --all git add *
Working Directory   Staging Area
6.5 Commit
Consolida dados selecionados para o repositório
$ git commit [options] <pathspec>
6.5 git commit [op ons] <pathspec>
Opção Descrição
-m,
--message
Mensagem obrigatória
--amend Recuperar ultimo commit
-p,
--patch
Adiciona interativamente
trechos de um arquivo
-A, --all git commit
Staging Area   Git Directory
6.6 Tags
Referências a pontos importantes do projeto
git tag
git tag -a v1.4 -m 'my version 1.4'
6.7 Status
Lista arquivos modificados em relação a ul ma versão
$ git status [options] <pathspec>
6.7 git status [op ons] <pathspec>
Opção Descrição
-s,
--short
Versão resumida do git status
--
ignored
Exibe arquivos ignorados
-vv
Exibe a diferença de conteúdo entre os
arquivos
6.8 Log
Lista histórico de modificações consolidadas
"commitadas" do projeto
$ git log [options]
6.8 git log [op ons]
Opção Descrição
-n <limit> Limita numero de commits
-p <limit> Exibe diff do commit
--oneline Versão condensada do histórico
--stat
Lista quais arquivos e nro de
linhas alteradas
--author="
<name>"
Lista commits por autor
$ git log --graph --decorate --oneline
6.9 Diff
Exibe diferença entre versões dos arquivos
$ git diff [options]
git diff 1234a 987d2
6.9 git diff [op ons]
$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
@commit.parents[0].parents[0].parents[0]
end
+ run_code(x, 'commits 1') do
+ git.commits.size
+ end
+
run_code(x, 'commits 2') do
log = git.commits('master', 15)
log.size
6.10 Stash
Salva modificações em andamento em um rascunho
git stash [options] [config]
git stash apply stash@{0}
6.10 git stash [op ons] [config]
Opção Descrição
list Lista rascunhos disponiveis
show Exibe conteúdo de rascunho selecionado
save Salva modi cações em novo rascunho
apply
Exibe a diferença de conteúdo entre os
arquivos
branch
Cria rami cação com conteúdo do
rascunho
clear Remove todos os rascunhos
6.10 git stash [op ons] [config]
Config Descrição
-u Incluir arquivos não monitorados
--all Inclui arquivos ignorados no rascunho
--
patch
Escolhe interativamente trechos que irão
para o rascunho
6.10 git stash [op ons] [config]
Tracked 
Files
Untracked 
Files
Ignored
Files
git stash
git stash ­u
git stash ­a
git stash options
6.11 Ignorando Arquivos
Adicione um arquivo  .gitignore  para definir o que será
ignorado pelo git.
6.11 Ignorando Arquivos
# Este é um comentário
build/ #diretório
*.[oa] # ignora terminados em .o ou .a
# mas rastreie lib.a, mesmo que você tenha ignorado
# arquivos terminados em .a acima
!lib.a
*.class
*.exe
doc/*.txt
 Ignorando arquivo já versionado:
git rm --cached [nome_arquivo]
6.12 Branch
Ramificações que permitem modificações independentes
git branch
git branch <name>
git branch -d <name>
git branch -m <new-name>
git checkout -b <new-name>
6.12 Branch
6.13 Ciclo de Vida
6.13 Ciclo de Vida
7. Desfazendo modificações
7.1 Checkout
Descartando alterações da Working Directory
$ git checkout -- <nome_arquivo>
git checkout 123ade
git checkout 452eac trabalho.c
7.2 Reset
Descartando alterações reescrevendo histórico
$ git reset HEAD <nome_arquivo>
7.2 git reset <commit> [op ons]
Op ons Descrição
--hard
Desfaz alterações descartando Working
Directory
--soft
Desfaz alterações preservando
modi cações
--patch
Escolhe interativamente trechos que
irão para o rascunho
7.3 Revert
Descartando alterações sem remover histórico
(patching)
$ git revert <commit> [options]
7.3.1 Revert vs Reset
8. Colaboração
8.1 Remote
Adiciona repositorio remoto ao projeto
git remote add <name> <url>
git remote rm <name>
git remote rename <old-name> <new-name>
8.2 Fetch
Importa commits de repositório remoto para local
git fetch <remote>
git fetch <remote> <branch>
8.3 Merge
Mesclando commits
git merge <remote>/<branch>
8.3 Merge  <master>     <outro>
$ git checkout master
$ git merge origin/outro
8.4 Pull
Fetch + Merge
git pull <remote>
git pull <remote> <branch>
git pull --rebase <remote>  
8.4 Pull
8.4 Pull
8.4 Pull
8.5 Push
Enviando commits para repositório remoto
git push -u <remote> <branch>
git push origin v1.5
git push origin --tags
git push :<branch-name>
8.6 Ciclo de Vida ‐ Remote
9 GitKraken
h ps://www.gitkraken.com/
Obrigado 

Weitere ähnliche Inhalte

Was ist angesagt?

Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
Raphael Cruzeiro
 

Was ist angesagt? (20)

Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Git v2
Git v2Git v2
Git v2
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHub
 
Git+github
Git+githubGit+github
Git+github
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotado
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - Webschool
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 
Git
GitGit
Git
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 

Ähnlich wie Introdução ao Git - Semac 2016

Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
Fabricio Nogueira
 

Ähnlich wie Introdução ao Git - Semac 2016 (20)

Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Conhecendo o GIT
Conhecendo o GITConhecendo o GIT
Conhecendo o GIT
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Git
GitGit
Git
 
Git controlo de_versoes
Git controlo de_versoesGit controlo de_versoes
Git controlo de_versoes
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Git + git hub
Git + git hubGit + git hub
Git + git hub
 
Git
GitGit
Git
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
 
Git 101
Git 101Git 101
Git 101
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 
Git
GitGit
Git
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento Semântico
 
Git - Visão Geral
Git - Visão GeralGit - Visão Geral
Git - Visão Geral
 
github-git-cheat-sheet.pdf
github-git-cheat-sheet.pdfgithub-git-cheat-sheet.pdf
github-git-cheat-sheet.pdf
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Introdução ao Git - Semac 2016