Você está na página 1de 18

Conceitos Básicos de Git

Gerência de Configuração e Mudança


de Software
GCMS
Prof. Danilo Farias
Slide 2

Objetivo
• Compreender os conceitos básicos sobre GCMS
aplicados a tecnologia Git.
• Conhecer a ferramenta Git e seus conceitos
básicos.
• Ser capazes de realizar os primeiros passos na
tecnologia Git.
Slide 3

Sobre o Git
• É um sistema de controle de versão distribuído.
Que foi criado para auxiliar no desenvolvimento
do Kernel Linux.
• O Site do Git:
http://git-scm.com/
• Onde realizar download:
http://git-scm.com/downloads
• Por onde estudar:
http://git-scm.com/book/pt-br/v1
Slide 4

Como o Git faz o seu controle de versão?

• A maioria dos sistemas de controle de versão


são centralizados.
Slide 5

Como o Git faz o seu controle de versão?

• Já o Git é um sistema de controle de versão


distribuído.
Slide 6

Como o Git faz o seu controle de versão?

• O Git estrutura seus arquivos e


informações da estrutura do seu
repositório em Objetos.

• O Git realizar seu controle de versão através de


uma informação criptografada do “nome do
objeto” necessária , por exemplo, para
representar a história de todo o projeto.
Slide 7

O Modelo de Objeto do Git


• O SHA

• As informações sobre o “nome do objeto” é chamada


de SHA, uma sequência de 40 caracteres.

• Em cada caso o nome é calculado baseado no valor


hash SHA1 do conteúdo do objeto. O hash SHA1 é
uma função criptográfica.
Slide 8

O Modelo de Objeto do Git


• O SHA

• Git pode rapidamente determinar se dois objetos são


idênticos ou não, somente comparando os seus
nomes.
• Visto que os nomes dos objetos são calculados da
mesma forma em todo o repositório, o mesmo
conteúdo armazenado em dois repositórios sempre
será armazenado sobre o mesmo nome.
Slide 9

O Modelo de Objeto do Git


• Os Objetos
• Todo objeto consiste de 3 campos - Tipo, Tamanho e
Conteúdo.
• O Tipo do objeto pode ser:
"blob", "tree", "commit", and
"tag"
• O Tamanho é simplesmente
o tamanho do conteúdo;
• O Conteúdo depende do
tipo que o objeto.
Slide 10

Tipos de Objeto do Git - Blob


• Blob - é usado para armazenar dados do arquivo
- é geralmente um arquivo.

• Um objeto "blob" não é


nada mais que um grande
pedaço de dados binários.
Ele não se referencia a
nada ou possui atributos de
qualquer tipo, nem mesmo
um nome de arquivo
Slide 11

Tipos de Objeto do Git - Tree


• Tree - é basicamente como um diretório - ele referencia
um conjunto de outras trees e/ou blobs (ex.: arquivos e
sub-diretórios)

• Um objeto tree contém uma lista


de entradas, cada uma com um
modo de acesso, tipo, nome
SHA1, e nome de arquivo,
ordenado pelo nome de arquivo.
• Duas trees possui o mesmo
hash SHA1 se somente se seus
conteúdos são idênticos.
Slide 12

Tipos de Objeto do Git - Commit


• Commit - aponta para uma simples tree, fazendo com
que o projeto se parecesse em um determinado ponto no
tempo.
• O Commit contém meta
informações sobre aquele ponto no
tempo, por exemplo um timestamp,
o autor das modificações desde o
último commit, um ponteiro para um
commit anterior, etc.
• O objeto "commit" liga o estado
físico de uma árvore com a
descrição de como a conseguimos.
Slide 13

Tipos de Objeto do Git - Commit


• Um Commit é definido por:
• Uma Tree: O nome SHA1 do objeto tree, representando o
conteúdo de um diretório em um certo ponto no tempo.
• Um Parent(s): O nome SHA1 de algum número de commits que
representa imediatamente o(s) passo(s) anterior(es) na história
do projeto. O exemplo acima possui um parent; commits gerados
por um merge podem ter mais do que um.
• Um Author: O nome da pessoa responsável pela alteração, junto
com uma data.
• Um Committer: O nome da pessoa que de fato criou o commit,
com a data que foi feita. Ele pode ser diferente do autor, por
exemplo, se o autor escreveu um patch e enviou-o para outra
pessoa que usou o patch para criar o commit.
• Um Comment: descrevendo esse commit.
Slide 14

Tipos de Objeto do Git - Commit


Slide 15

Tipos de Objeto do Git - Tag


• Tag - é uma forma de marcar um commit específico de
alguma forma como especial. Ele é normalmente usado
para identificar certos commits como versões/revisões
específicas ou alguma coisa junto a aquelas linhas.

• Um objeto Tag contém um nome


de objeto (chamado simplesmente
de 'object'), tipo de objeto, nome da
tag, o nome da pessoa ('tagger')
que criou a tag, e uma mensagem,
que pode conter um assinatura.
Slide 16

Estrutura de repositório do Git


Slide 17

Vamos praticar!!!
Slide 18

Encerramento - Dúvidas

Prof. Danilo Farias

Você também pode gostar