SlideShare uma empresa Scribd logo
1 de 141
Baixar para ler offline
Bruno Calheira
Use o Git
e perca o Medo de Errar
Quem é Bruno Calheira?
● Baiano
● Matemático, Especialista em
Engenharia de Software
● Técnico Judiciário do TJ-BA
● Delegado Sindical
● Consultor e Desenvolvedor Web
Freelancer apaixonado por
Softwares Livres
As FALHAS de hoje são os
degraus para o SUCESSO de
amanhã.
“O sucesso é 1% de inspiração
e 99% de transpiração.”
Thomas Edson
E se pudéssemos
voltar atrás e
corrigir os erros?
Sistemas de Controle de Versões
SCV
Sistemas de Controle de Versões
armazenam as alterações feitas em um
conjunto de arquivos ao longo do tempo,
permitindo que, posteriormente, você
retorne estes arquivos aos seus estados
anteriores.
Eficiência
Vantagens de usar um SCV
Eficiência
● Economia de Espaço
Vantagens de usar um SCV
Eficiência
● Economia de Espaço
● Padronização das Informações a
respeito de cada versão
Vantagens de usar um SCV
Eficiência
● Economia de Espaço
● Padronização das Informações a
respeito de cada versão
● Destaca as diferenças de cada
versão salva
Vantagens de usar um SCV
Vantagens de usar um SCV
Segurança
Vantagens de usar um SCV
Segurança
● Funciona como Backup
Vantagens de usar um SCV
Segurança
● Funciona como Backup
● Permite recuperar arquivos
apagados por acidente
Vantagens de usar um SCV
Segurança
● Funciona como Backup
● Permite recuperar arquivos
apagados por acidente
● Permite recuperar versões
anteriores de um arquivo
Vantagens de usar um SCV
Colaboração
Vantagens de usar um SCV
Colaboração
● Múltiplos usuários podem
trabalhar em um mesmo arquivo
simultaneamente
Vantagens de usar um SCV
Colaboração
● Múltiplos usuários podem
trabalhar em um mesmo arquivo
simultaneamente
● Saber: quem alterou o quê,
quando e como
Principais SCV
Principais SCV
Principais SCV
Conhecendo o Git
Open Source
Conhecendo o Git
Distribuído
Cada usuário possui um
repositório completo.
Vocabulário
Repositório
Espécie de Banco de Dados onde o SCV
armazena as versões e os metadados
destas versões.
Nos SCV Centralizados
existe uma única cópia
do Repositório
armazenada no Servidor
O Git é um SVC Distribuído.
Cada usuário possui um
repositório completo.
Conhecendo o Git
Rápido
Reduz a necessidade de
conexão com o servidor.
Git - Trabalhando Off-line
● Ver o histórico
● Comparar diferenças
● Confirmar alterações
● ...
Conhecendo o Git
Fácil Aprendizado
Comunidade ativa e
amigável.
Git na Prática
Instalando o Git
git-scm.com
Quem tem
medo do
terminal?
git-scm.com/downloads/guis
Git na Prática
Configurando o Git
Comando
git config
Configura o git
~ >
~ > git config --global user.name “Fulano de Tal”
~ >
~ > git config --global user.name “Fulano de Tal”
~ > git config --global user.email fulano@gmail.com
~ >
~ > git config --list
~ > git config --list
user.name=Fulano de Tal
user.email=fulano@exemplo.com
core.editor=nano -wl1
color.ui=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
~ >
Git na Prática
Criando um Repositório
~ > cd Sites #entra no diretório Sites
~/Sites >
~ > cd Sites #entra no diretório Sites
~/Sites > mkdir acaraqueijo #cria diretorio
~ > cd Sites #entra no diretório Sites
~/Sites > mkdir acaraqueijo #cria diretorio
~/Sites > cd acaraqueijo
~/Sites/acaraqueijo >
~ > cd Sites #entra no diretório Sites
~/Sites > mkdir acaraqueijo #cria diretorio
~/Sites > cd acaraqueijo
~/Sites/acaraqueijo > touch index.html #cria arquivo
Comando
git init
Inicia um repositório
~/Sites/acaraqueijo > git init
~/Sites/acaraqueijo > git init
Initialized empty Git repository in
/Users/brunocalheira/Sites/acaraqueijo/.git/
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git init
Initialized empty Git repository in
/Users/brunocalheira/Sites/acaraqueijo/.git/
~/Sites/acaraqueijo > ls #listar conteúdo
~/Sites/acaraqueijo > git init
Initialized empty Git repository in
/Users/brunocalheira/Sites/acaraqueijo/.git/
~/Sites/acaraqueijo > ls #listar conteúdo
index.html
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > ls -a #listar ocultos
. .. .git index.html
~/Sites/acaraqueijo >
Git na Prática
Rastreando Arquivos
Comando
git status
Verifica o status dos arquivos
~/Sites/acaraqueijo > git status
~/Sites/acaraqueijo > git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to
track)
~/Sites/acaraqueijo >
Comando
git add
Adiciona arquivos ao Stage
Diretório
de Trabalho
Área de
Staging
Repositório
Git
Diretório
de Trabalho
Área de
Staging
Repositório
Git
git add
~/Sites/acaraqueijo > git add index.html
~/Sites/acaraqueijo > git add index.html
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git add index.html
~/Sites/acaraqueijo > git status
~/Sites/acaraqueijo > git add index.html
~/Sites/acaraqueijo > git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
~/Sites/acaraqueijo >
Comando
git commit
Confirma o registro de uma versão
do projeto no repositório
Diretório
de Trabalho
Área de
Staging
Repositório
Git
git commit
~/Sites/acaraqueijo > git commit -m "Versão Inicial"
~/Sites/acaraqueijo > git commit -m "Versão Inicial"
[master (root-commit) ba338c4] Versão Inicial
1 file changed, 15 insertions(+)
create mode 100644 index.html
~/Sites/acaraqueijo >
Comando
git log
Consulta os commits realizados
~/Sites/acaraqueijo > git log
commit ba338c4f76e5b6acd8846e24443abd49050d8105
Author: Bruno Calheira <bruno@calheira.com>
Date: Sun May 24 17:01:14 2015 -0300
Versão Inicial
~/Sites/acaraqueijo >
Vocabulário
Commit Hash
Identificador único de cada commit.
Composto por 40 caracteres usando
uma função de checksum.
Git na Prática
Alterando o projeto
~/Sites/acaraqueijo > git status
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working
directory)
modified: index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
style.css
no changes added to commit (use "git add" and/or "git commit -a")
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git add .
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git add .
~/Sites/acaraqueijo > git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: index.html
new file: style.css
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git commit -m "Adiciona Folha de
Estilos"
~/Sites/acaraqueijo > git commit -m "Adiciona Folha de
Estilos"
[master 0bab0e3] Adiciona Folha de Estilos
2 files changed, 12 insertions(+)
create mode 100644 style.css
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git log --oneline
~/Sites/acaraqueijo > git log --oneline
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo >
Git na Prática
Ramificando o projeto
Comando
git branch
exibe, cria e deleta ramos
~/Sites/acaraqueijo > git branch
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo > git branch figura
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo > git branch figura
~/Sites/acaraqueijo > git branch
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo > git branch figura
~/Sites/acaraqueijo > git branch
figura
* master
~/Sites/acaraqueijo >
Comando
git checkout
Carrega um arquivo
Carrega um ramo
Carrega uma versão
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo > git branch figura
~/Sites/acaraqueijo > git branch
figura
* master
~/Sites/acaraqueijo > git checkout figura
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo > git branch figura
~/Sites/acaraqueijo > git branch
figura
* master
~/Sites/acaraqueijo > git checkout figura
Switched to branch 'figura'
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git branch
* master
~/Sites/acaraqueijo > git branch figura
~/Sites/acaraqueijo > git branch
figura
* master
~/Sites/acaraqueijo > git checkout figura
Switched to branch 'figura'
~/Sites/acaraqueijo > git branch
* figura
master
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git add .
~/Sites/acaraqueijo > git commit -m "Adiciona Foto"
~/Sites/acaraqueijo > git add .
~/Sites/acaraqueijo > git commit -m "Adiciona Foto"
[figura 0ba52ff] Adiciona Foto
2 files changed, 1 insertion(+)
create mode 100644 acaraqueijo.jpg
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git log --oneline
0ba52ff Adiciona Foto
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git log --oneline
0ba52ff Adiciona Foto
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo > git checkout master
Switched to branch 'master'
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git log --oneline
0ba52ff Adiciona Foto
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo > git checkout master
Switched to branch 'master'
~/Sites/acaraqueijo > git log --oneline
~/Sites/acaraqueijo > git log --oneline
0ba52ff Adiciona Foto
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo > git checkout master
Switched to branch 'master'
~/Sites/acaraqueijo > git log --oneline
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo >
Comando
git merge
Agrega as versões de outro ramo
no ramo atual
~/Sites/acaraqueijo > git merge figura
~/Sites/acaraqueijo > git merge figura
Updating 0bab0e3..0ba52ff
Fast-forward
acaraqueijo.jpg | Bin 0 -> 50510 bytes
index.html | 1 +
2 files changed, 1 insertion(+)
create mode 100644 acaraqueijo.jpg
~/Sites/acaraqueijo >
~/Sites/acaraqueijo > git merge figura
Updating 0bab0e3..0ba52ff
Fast-forward
acaraqueijo.jpg | Bin 0 -> 50510 bytes
index.html | 1 +
2 files changed, 1 insertion(+)
create mode 100644 acaraqueijo.jpg
~/Sites/acaraqueijo > git log --oneline
~/Sites/acaraqueijo > git merge figura
Updating 0bab0e3..0ba52ff
Fast-forward
acaraqueijo.jpg | Bin 0 -> 50510 bytes
index.html | 1 +
2 files changed, 1 insertion(+)
create mode 100644 acaraqueijo.jpg
~/Sites/acaraqueijo > git log --oneline
0ba52ff Adiciona Foto
0bab0e3 Adiciona Folha de Estilos
ba338c4 Versão Inicial
~/Sites/acaraqueijo >
Git na Prática
Repositórios Remotos
GitLab.com
Bitbucket.com
GitHub.com
Comando
git remote
lista, adiciona, remove repositórios remotos
~/Sites/acaraqueijo > git remote add origin https:
//github.com/calheira/acaraqueijo.git
~/Sites/acaraqueijo >
Comando
git push
Envia as atualizações
do repositório local
para o repositório remoto
~/Sites/acaraqueijo > git remote add origin https:
//github.com/calheira/acaraqueijo.git
~/Sites/acaraqueijo > git push -u origin master
~/Sites/acaraqueijo > git remote add origin https:
//github.com/calheira/acaraqueijo.git
~/Sites/acaraqueijo > git push -u origin master
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (11/11), 50.42 KiB | 0 bytes/s, done.
Total 11 (delta 2), reused 0 (delta 0)
To https://github.com/calheira/acaraqueijo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
~/Sites/acaraqueijo >
https://github.com/calheira/acaraqueijo
Git & WordPress
Git & WordPress
Utilize o .gitignore para
excluir os aquivos e
diretórios sensíveis.
Git & WordPress
Use o git controlar apenas
arquivos que você altera
com frequência.
Git & WordPress
Use o git controlar apenas
arquivos que você altera
com frequência.
Controle apenas seu
Tema Filho.
Git & WordPress
Para controlar o BD utilize
o plugin Revisr.
revisr.io
Onde aprender mais?
http://git-scm.com/book/pt-br/v1
Obrigado
pela atenção!
Dúvidas?
Contato
bruno@calheira.com
@brunocalheira

Mais conteúdo relacionado

Mais procurados (20)

Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
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
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
 
Git
GitGit
Git
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Learning git
Learning gitLearning git
Learning git
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git basics
Git basicsGit basics
Git basics
 
git flow
git flowgit flow
git flow
 
Git
GitGit
Git
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 

Destaque

Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 
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 2012Mauro George
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BINDzbrendo
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para IniciantesLoiane Groner
 
Como baixar os estudo no slideshare
Como baixar os estudo no slideshareComo baixar os estudo no slideshare
Como baixar os estudo no slideshareMoisés Sampaio
 
Passo a passo para baixar slides
Passo a passo para baixar slidesPasso a passo para baixar slides
Passo a passo para baixar slidesDênia Cavalcante
 

Destaque (10)

Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 
Dns
DnsDns
Dns
 
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
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BIND
 
Linux - DNS
Linux - DNSLinux - DNS
Linux - DNS
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para Iniciantes
 
Projeto de Rede Local (LAN)
Projeto de Rede Local (LAN)Projeto de Rede Local (LAN)
Projeto de Rede Local (LAN)
 
Como baixar os estudo no slideshare
Como baixar os estudo no slideshareComo baixar os estudo no slideshare
Como baixar os estudo no slideshare
 
Passo a passo para baixar slides
Passo a passo para baixar slidesPasso a passo para baixar slides
Passo a passo para baixar slides
 

Semelhante a Use o git e perca o medo de errar

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 pazFlávio Lisboa
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
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 2019Tchelinux
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 
Git that like a boss: Grupo RBS
Git that like a boss: Grupo RBSGit that like a boss: Grupo RBS
Git that like a boss: Grupo RBSEvandro Eisinger
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitC. Augusto Proiete
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteComunidade NetPonto
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Introdução ao Git + Workshop
Introdução ao Git + WorkshopIntrodução ao Git + Workshop
Introdução ao Git + Workshopoverduka
 

Semelhante a Use o git e perca o medo de errar (20)

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
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
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
 
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
 
Git
GitGit
Git
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Git Rápido e Fácil
Git Rápido e FácilGit Rápido e Fácil
Git Rápido e Fácil
 
Git that like a boss: Grupo RBS
Git that like a boss: Grupo RBSGit that like a boss: Grupo RBS
Git that like a boss: Grupo RBS
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com Git
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto Proiete
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git Overview: Grupo RBS
Git Overview: Grupo RBSGit Overview: Grupo RBS
Git Overview: Grupo RBS
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Conhecendo o GIT
Conhecendo o GITConhecendo o GIT
Conhecendo o GIT
 
Git do Zero - Campus Party #12
Git do Zero - Campus Party #12Git do Zero - Campus Party #12
Git do Zero - Campus Party #12
 
Git
GitGit
Git
 
Ferramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando gitFerramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando git
 
Introdução ao Git + Workshop
Introdução ao Git + WorkshopIntrodução ao Git + Workshop
Introdução ao Git + Workshop
 

Use o git e perca o medo de errar