SlideShare uma empresa Scribd logo
Git e GitHub




         @hsilvest
O que é Git?

     "Git é um sistema de controle de versão
          distribuida, rápido e escalável"
                                                   Traducão do Manual


Basicamente é um versionador de arquivos, é utilizado
principalmente para gerenciar versões de softwares desenvolvidos
por um ou mais desenvolvedores, com ele podemos implementar
novas funcionalidades e tudo é registrado em um histórico, o qual
podemos retroceder sempre que necessário, os integrantes de um
projeto podem enviar correções, atualizacões, etc. As alterações
enviadas para o projeto principal não comprometem o mesmo
pois cabe ao dono do projeto a inclusão ou não das alterações
efetuadas.
Um Pouco de História


   O git foi desenvolvido
   inicialmente por Linus Torvalds
   (Criador do Linux), pela
   necessidade de ter um software
   capaz de controlar a versão do
   kernel do linux.


   Mais informacões no link do
   projeto Git abaixo:

   http://git.or.cz/
Termos



Repository: Local onde fica todos os arquivos do
projeto, inclusive os históricos e versões.


Commit: Colecão de alteracões realizadas, é como
se fosse um “checkpoint” do seu projeto, sempre
que necessário vc pode retroceder ate algum
commit.
Termos
Branch: É uma ramificacão do seu projeto, cada branch
representa uma versão do seu projeto, e podemos seguir
uma linha de desenvolvimento a partir de cada branch.


Fork: Basicamente é uma bifurcação, uma cópia de um
projeto existente para seguir em uma nova direção.

Merge: É a capacidade de incorporar alterações do git,
onde acontece uma junção dos branchs.
Começando
Primeiro vamos criar um novo diretório e
em seguida iniciar nosso repository git:

mkdir NovoProjeto
cd NovoProjeto



git init

 Todos os arquivos dentro do diretório NovoProjeto faz parte do nosso repository
Configurando
Agora vamos indicar as informações do desenvolvedor,
fazemos isto para identificar os desenvolvedores em cada
commit específico:




git config user.name “Henrique Silvestre”
git config usar.email “hs.ccti@gmail.com”

Nesse ponto já podemos ver que uma pasta “.git” foi criada, lá
ficam os registros de todo o nosso projeto.
Exemplificando

Vamos criar um arquivo vazio para exemplificarmos:
touch exemplo.txt


Agora informamos ao git que vamos adicionar o arquivo que
acabamos de criar ao proximo commit:


git add exemplo.txt


Mas se quisessemos que todos os arquivos fossem
adicionados podiamos ter usado o seguinte comando:


git add .
Exemplificando



O git é inteligente o suficiente para apenas
realizar commits se detectar alguma alteração
nos arquivos que foram indicados pelo (git add),
dessa forma o único commit que ele realiza sem
alguma alteração é o primeiro.
Nosso Primeiro Commit...

git commit -a -m “Nosso primeiro commit”

Passamos o parâmetro -a para informar que
todos os arquivos alterados devem ser
incluidos do commit.

Passamos o paramêtro -m para adicionar uma
mensagem explicativa para o commit.
Comandos Úteis
Depois que fizemos nosso primeiro commit existem alguns comandos
que podemos utilizar para verificar o mesmo, são eles:



git log // listar todos os commits já realizados.


git status // mostrar os arquivos alterados desde o
último commit.


git show // mostrar as alterações realizadas no
último commit.
Branchs
Todo novo repositorio git tem um branch default
chamado “master”.


Para listar todos nossos branchs:


git branch


Se vc não tiver mais branchs a saida será:


*master
Branchs
Vamos criar um novo branch chamado “working” pegando como
base o branch corrente e vamos continuar no branch corrente:




git branch working


Agora vamos criar um novo branch chamado
“outro” como base o branch “working” e vamos
nos manter no branch corrente:


git branch outro working
Branchs



Como já vimos, nosso repositório ja tem por default o
branch “master” dessa forma quando falamos “branch
corrente” nos referimos ao branch que estamos
trabalhando no momento. Se não criamos nenhum
então estaremos trabalhando no master.
Branchs
Para criar um novo branch e automaticamente
sairmos do branch corrente e irmos para o
novo branch usamos o “checkout”:


git checkout -b “outro”


Por hora devemos ter os seguintes branchs:


master
*outro

          o branch sinalizado com “*” é o branch corrente.
Branchs
Mudando de branch corrente:


git checkout master


Agora a saida fica assim:


*master
outro


Para deletarmos um branch fazemos dessa maneira:


branch -d outro
Branchs



Não podemos deletar um branch
corrente, primeiro temos que mudar para
outro branch e depois deletarmos o que
desejamos.
Exemplificando Merge
Digamos que o arquivo exemplo.txt foi alterado no
branch “outro”.


git checkout outro // alterando para o branch outro.


git add . // indicamos todos os arquivos do commit.


git commit -a -m “alteração exemplo.txt” // commit.
Exemplificando Merge
Agora queremos que nossa alteração no exemplo.txt
seja refletida a nossa branch master.


Primeiro vamos para o branch que queremos as
alterações refletidas:


git checkout master


Agora realizamos o merge (mesclagem/fusão) das
alterações do branch outro para o current branch:


git merge outro
Exemplificando Merge
Não precisamos passar o branch master como parâmetro pois
já estamos nele através do:
git checkout master


Lembram?


A saida deverá ser algo como isto:


Updating 642caa9..851gb82

Fast forward
exemplo.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
Exemplificando Merge

Confirmando a alteração no arquivo:
cat exemplo.txt

Nesse momento toda a alteração realizada no
branch “outro” sera refletida no branch master
inclusive nossos commits que fizemos no branch
outro e agora esta no master.
Exemplificando Merge



Todo branch possui um branch pai, que é a base
a partir de então, sabendo disso e se
precisassemos fazer um merge em um branch
master que já tivesse alguma alteração depois
que o branch outro foi criado? Dessa forma o
branch outro não estava refletindo a ultima versão
de master, como proceder então?
Exemplificando Merge


Nesse caso a melhor forma seria o “rebase” ou seja pegar
o ultimo commit do branch master, e trazer para o branch
outro e aplicar todos os seus commits nele, feito isso
agora nosso branch outro está refletindo a ultima versão
do master

Poderiamos fazer o merge também, mas talvez poderia
causar conflitos e a última coisa que queremos são
conflitos.
Exemplificando Merge
Então vamos fazer o rebase da branch outro para refletir
a ultima versão da branch master:



git checkout outro
git rebase master

Agora podemos realizar o merge:

git checkout master
git merge outro
T o d o s o s a rq u iv o s q u e e s ta m o s
                tra b a lh a n d o e s ta o n e s s e e s tá g io
                                                                                     A p ó s e fe tu a rm o s o
                a lte r a ç õ e s , im p le m e n ta c õ e s , e tc
                                                                                    C o m m it o s a rq u iv o s
                                                                                   In d ic a d o s v ã o p a r a o
                                 git add                                                   R e p o s ito r y




   WORKING                                                   STAGE                 REPOSITORY




       D e p o is q u e in d ic a r m o s q u a is                    git commit
  A r q u iv o s d e v e m s e r c o n s id e r a d o s
P e lo c o m m it e n tr a m o s n e s te e s tá g io
Repositórios Remotos


A idéia é a mesma de um repositório local, mas os
remotos como o proprio nome diz, não estão na
sua máquina, estão hospedados em servidores na
internet ou outra máquina qualquer.


Existem vários sites que servem como
repositórios online, nesta apresentação usaremos
o www.github.com pois é um dos melhores na
minha opnião.
Repositórios Remotos



A primeira coisa que precisamos é criar uma conta no
github e em seguida configurar a chave ssh para que
consigamos nos comunicar com o github.

Para auxilio na configuracao da ssh keys ou outra
configuracao do github siga o passo-a-passo do próprio site
indicado abaixo:

http://help.github.com/set-your-user-name-email-and-github-tok
Clonando um Projeto



Para criar um clone (cópia de todo o projeto,
incluindo todos commits) devemos utilizar o
seguinte comando:


git clone
https://github.com/MeuUsuario/MeuProjeto
Clonando um Projeto
Logo após poderemos ver que foi criado um diretório com o
nome do projeto e dentro dele a cópia do projeto
Veja o repositório remotos disponível agora:


cd MeuProjeto
git branch –r


origin/HEAD
origin/master
origin/working
Clonando um Projeto



Devemos criar um branch local baseado
em algum branch remoto antes de
começar a efetuarmos nossas alterações.
git checkout –b outro origin/working
Clonando um Projeto



Agora vamos supor que nós efetuamos várias
alterações neste repositório e durante esse tempo o
projeto principal também foi alterado não
correspondendo mais a base que nós possuimos
agora, e então desejamos sincronizar com a última
versão disponível do projeto.
Clonando um Projeto

Primeiramente recuperamos a versão recente
do projeto:

git fetch

Agora efetuamos o merge com o branch atual:

git merge origin/master
Conclusão



Esta apresentação visa esclarecer os
conceitos básicos do git e github, mas existem
infinidades de conceitos que podem ser
pesquisados mais profundamente, material na
internet não falta, espero ter ajudado a clarear
alguns conceitos! Qualquer correção, ou
observações comentem.

Mais conteúdo relacionado

Mais procurados

Git and github
Git and githubGit and github
Git and github
Sayantika Banik
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
Igor Steinmacher
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
Hélio Medeiros
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
Senthilkumar Gopal
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
Vikram SV
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
Behzad Altaf
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
Taisuke Inoue
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
Anurag Upadhaya
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
Walmyr Carvalho
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
Panagiotis Papadopoulos
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
Jim Yeh
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
Daniel Brandão
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
Tilton2
 
Introdução ao HTML e CSS
Introdução ao HTML e CSSIntrodução ao HTML e CSS
Introdução ao HTML e CSS
Sérgio Souza Costa
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
Nécio de Lima Veras
 
Git real slides
Git real slidesGit real slides
Git real slides
Lucas Couto
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
Nécio de Lima Veras
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
 

Mais procurados (20)

Git and github
Git and githubGit and github
Git and github
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
git and github
git and githubgit and github
git and github
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
 
Introdução ao HTML e CSS
Introdução ao HTML e CSSIntrodução ao HTML e CSS
Introdução ao HTML e CSS
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 

Semelhante a Git e GitHub - Conceitos Básicos

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
Bruno Orlandi
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
Raphael Cruzeiro
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
Erik Cruz
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Nathália Cruz de Oliveira
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Nathália Cruz de Oliveira
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
Diogo Souza Machado
 
Git 101
Git 101Git 101
Git 101
ngmachado
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
Vagner Santana
 
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
Leandro Cavalcante
 
Git ...ftw!
Git ...ftw!  Git ...ftw!
Git ...ftw!
Fabian Carlos
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
PET Computação
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
inovacaoDBServer
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
Diogo Gomes
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
Daniel Destro Do Carmo
 
Git e github
Git e githubGit e github
Git e github
Kevin Fernandes
 
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
Marcio Barbosa
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
Michael Schuenck dos Santos
 
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
Tchelinux
 
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
Fernando Henrique Bonfim Moreno del Rio
 
git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)
Carlos Duarte do Nascimento
 

Semelhante a Git e GitHub - Conceitos Básicos (20)

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Git 101
Git 101Git 101
Git 101
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
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 ...ftw!
Git ...ftw!  Git ...ftw!
Git ...ftw!
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Git e github
Git e githubGit e github
Git e github
 
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 para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
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 fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)
 

Último

PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
anpproferick
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Annelise Gripp
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
anpproferick
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
tnrlucas
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
Rafael Santos
 
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptxREDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
IranyGarcia
 

Último (6)

PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
 
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptxREDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
 

Git e GitHub - Conceitos Básicos

  • 1. Git e GitHub @hsilvest
  • 2. O que é Git? "Git é um sistema de controle de versão distribuida, rápido e escalável" Traducão do Manual Basicamente é um versionador de arquivos, é utilizado principalmente para gerenciar versões de softwares desenvolvidos por um ou mais desenvolvedores, com ele podemos implementar novas funcionalidades e tudo é registrado em um histórico, o qual podemos retroceder sempre que necessário, os integrantes de um projeto podem enviar correções, atualizacões, etc. As alterações enviadas para o projeto principal não comprometem o mesmo pois cabe ao dono do projeto a inclusão ou não das alterações efetuadas.
  • 3. Um Pouco de História O git foi desenvolvido inicialmente por Linus Torvalds (Criador do Linux), pela necessidade de ter um software capaz de controlar a versão do kernel do linux. Mais informacões no link do projeto Git abaixo: http://git.or.cz/
  • 4. Termos Repository: Local onde fica todos os arquivos do projeto, inclusive os históricos e versões. Commit: Colecão de alteracões realizadas, é como se fosse um “checkpoint” do seu projeto, sempre que necessário vc pode retroceder ate algum commit.
  • 5. Termos Branch: É uma ramificacão do seu projeto, cada branch representa uma versão do seu projeto, e podemos seguir uma linha de desenvolvimento a partir de cada branch. Fork: Basicamente é uma bifurcação, uma cópia de um projeto existente para seguir em uma nova direção. Merge: É a capacidade de incorporar alterações do git, onde acontece uma junção dos branchs.
  • 6. Começando Primeiro vamos criar um novo diretório e em seguida iniciar nosso repository git: mkdir NovoProjeto cd NovoProjeto git init Todos os arquivos dentro do diretório NovoProjeto faz parte do nosso repository
  • 7. Configurando Agora vamos indicar as informações do desenvolvedor, fazemos isto para identificar os desenvolvedores em cada commit específico: git config user.name “Henrique Silvestre” git config usar.email “hs.ccti@gmail.com” Nesse ponto já podemos ver que uma pasta “.git” foi criada, lá ficam os registros de todo o nosso projeto.
  • 8. Exemplificando Vamos criar um arquivo vazio para exemplificarmos: touch exemplo.txt Agora informamos ao git que vamos adicionar o arquivo que acabamos de criar ao proximo commit: git add exemplo.txt Mas se quisessemos que todos os arquivos fossem adicionados podiamos ter usado o seguinte comando: git add .
  • 9. Exemplificando O git é inteligente o suficiente para apenas realizar commits se detectar alguma alteração nos arquivos que foram indicados pelo (git add), dessa forma o único commit que ele realiza sem alguma alteração é o primeiro.
  • 10. Nosso Primeiro Commit... git commit -a -m “Nosso primeiro commit” Passamos o parâmetro -a para informar que todos os arquivos alterados devem ser incluidos do commit. Passamos o paramêtro -m para adicionar uma mensagem explicativa para o commit.
  • 11. Comandos Úteis Depois que fizemos nosso primeiro commit existem alguns comandos que podemos utilizar para verificar o mesmo, são eles: git log // listar todos os commits já realizados. git status // mostrar os arquivos alterados desde o último commit. git show // mostrar as alterações realizadas no último commit.
  • 12. Branchs Todo novo repositorio git tem um branch default chamado “master”. Para listar todos nossos branchs: git branch Se vc não tiver mais branchs a saida será: *master
  • 13. Branchs Vamos criar um novo branch chamado “working” pegando como base o branch corrente e vamos continuar no branch corrente: git branch working Agora vamos criar um novo branch chamado “outro” como base o branch “working” e vamos nos manter no branch corrente: git branch outro working
  • 14. Branchs Como já vimos, nosso repositório ja tem por default o branch “master” dessa forma quando falamos “branch corrente” nos referimos ao branch que estamos trabalhando no momento. Se não criamos nenhum então estaremos trabalhando no master.
  • 15. Branchs Para criar um novo branch e automaticamente sairmos do branch corrente e irmos para o novo branch usamos o “checkout”: git checkout -b “outro” Por hora devemos ter os seguintes branchs: master *outro o branch sinalizado com “*” é o branch corrente.
  • 16. Branchs Mudando de branch corrente: git checkout master Agora a saida fica assim: *master outro Para deletarmos um branch fazemos dessa maneira: branch -d outro
  • 17. Branchs Não podemos deletar um branch corrente, primeiro temos que mudar para outro branch e depois deletarmos o que desejamos.
  • 18. Exemplificando Merge Digamos que o arquivo exemplo.txt foi alterado no branch “outro”. git checkout outro // alterando para o branch outro. git add . // indicamos todos os arquivos do commit. git commit -a -m “alteração exemplo.txt” // commit.
  • 19. Exemplificando Merge Agora queremos que nossa alteração no exemplo.txt seja refletida a nossa branch master. Primeiro vamos para o branch que queremos as alterações refletidas: git checkout master Agora realizamos o merge (mesclagem/fusão) das alterações do branch outro para o current branch: git merge outro
  • 20. Exemplificando Merge Não precisamos passar o branch master como parâmetro pois já estamos nele através do: git checkout master Lembram? A saida deverá ser algo como isto: Updating 642caa9..851gb82 Fast forward exemplo.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
  • 21. Exemplificando Merge Confirmando a alteração no arquivo: cat exemplo.txt Nesse momento toda a alteração realizada no branch “outro” sera refletida no branch master inclusive nossos commits que fizemos no branch outro e agora esta no master.
  • 22. Exemplificando Merge Todo branch possui um branch pai, que é a base a partir de então, sabendo disso e se precisassemos fazer um merge em um branch master que já tivesse alguma alteração depois que o branch outro foi criado? Dessa forma o branch outro não estava refletindo a ultima versão de master, como proceder então?
  • 23. Exemplificando Merge Nesse caso a melhor forma seria o “rebase” ou seja pegar o ultimo commit do branch master, e trazer para o branch outro e aplicar todos os seus commits nele, feito isso agora nosso branch outro está refletindo a ultima versão do master Poderiamos fazer o merge também, mas talvez poderia causar conflitos e a última coisa que queremos são conflitos.
  • 24. Exemplificando Merge Então vamos fazer o rebase da branch outro para refletir a ultima versão da branch master: git checkout outro git rebase master Agora podemos realizar o merge: git checkout master git merge outro
  • 25. T o d o s o s a rq u iv o s q u e e s ta m o s tra b a lh a n d o e s ta o n e s s e e s tá g io A p ó s e fe tu a rm o s o a lte r a ç õ e s , im p le m e n ta c õ e s , e tc C o m m it o s a rq u iv o s In d ic a d o s v ã o p a r a o git add R e p o s ito r y WORKING STAGE REPOSITORY D e p o is q u e in d ic a r m o s q u a is git commit A r q u iv o s d e v e m s e r c o n s id e r a d o s P e lo c o m m it e n tr a m o s n e s te e s tá g io
  • 26. Repositórios Remotos A idéia é a mesma de um repositório local, mas os remotos como o proprio nome diz, não estão na sua máquina, estão hospedados em servidores na internet ou outra máquina qualquer. Existem vários sites que servem como repositórios online, nesta apresentação usaremos o www.github.com pois é um dos melhores na minha opnião.
  • 27. Repositórios Remotos A primeira coisa que precisamos é criar uma conta no github e em seguida configurar a chave ssh para que consigamos nos comunicar com o github. Para auxilio na configuracao da ssh keys ou outra configuracao do github siga o passo-a-passo do próprio site indicado abaixo: http://help.github.com/set-your-user-name-email-and-github-tok
  • 28. Clonando um Projeto Para criar um clone (cópia de todo o projeto, incluindo todos commits) devemos utilizar o seguinte comando: git clone https://github.com/MeuUsuario/MeuProjeto
  • 29. Clonando um Projeto Logo após poderemos ver que foi criado um diretório com o nome do projeto e dentro dele a cópia do projeto Veja o repositório remotos disponível agora: cd MeuProjeto git branch –r origin/HEAD origin/master origin/working
  • 30. Clonando um Projeto Devemos criar um branch local baseado em algum branch remoto antes de começar a efetuarmos nossas alterações. git checkout –b outro origin/working
  • 31. Clonando um Projeto Agora vamos supor que nós efetuamos várias alterações neste repositório e durante esse tempo o projeto principal também foi alterado não correspondendo mais a base que nós possuimos agora, e então desejamos sincronizar com a última versão disponível do projeto.
  • 32. Clonando um Projeto Primeiramente recuperamos a versão recente do projeto: git fetch Agora efetuamos o merge com o branch atual: git merge origin/master
  • 33. Conclusão Esta apresentação visa esclarecer os conceitos básicos do git e github, mas existem infinidades de conceitos que podem ser pesquisados mais profundamente, material na internet não falta, espero ter ajudado a clarear alguns conceitos! Qualquer correção, ou observações comentem.