git

Conceitos básicos

Desenvolvedor web

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book

Cícero Viana

@cicerohen

/cicerohen

O que é o git?

Sistema open source de controle de versão de arquivos

Como você versiona seus trabalhos acadêmicos?

Meu sobrenome é organização

Num belo e tranquilo dia de expediente na empresa...

"Estagiário Zoeiro, vou te passar um site de um cliente nosso pra você fazer uma pequena alteração"

[ Programador Rabugento ]

"Opa! Só se for agora. :D"

[O Estagiário Zoeiro]

No final do dia...

[O Estagiário Zoeiro]

"Pronto, chapa..."

[ Programador Rabugento ]

[ Programador Rabugento ]

[ Programador Rabugento ]

R.I.P Estagiário Zoeiro

Se o Estagiário Zoeiro tivesse conhecido o git, nada disso teria acontecido.

Versionando com o git

Área de trabalho

Área de Consolidação

/O_Lindo_Site_Do_Cliente

Área de Estágio

(diretório .git)

Área de Trabalho

Espaço conceitual que corresponde ao diretório do seu projeto e tudo que há dentro dele.

O git observa tudo que acontece em sua Área de Trabalho

Área de Estágio

Espaço conceitual que contém todos os arquivos da Área de Trabalho que foram modificados.

Tudo que estiver nele, irá para a Área de Consolidação

Área de Consolidação

Área que corresponde a um diretório chamado ".git" dentro do diretório do projeto,  onde o git guarda todos os dados e objetos do projeto.

Então o git vai criar cópias dos arquivos que eu alterei e guardar dentro da Área de Consolidação? Não. Isso será explicado logo mais

Exemplificando

O Estagiário Zoeiro altera e salva um arquivo.

O git identifica a alteração no arquivo.

O Estagiário Zoeiro "pede" pro git listar os arquivos que ele alterou.

git status

Comando que informa o estado atual da sua Área de Trabalho

O GIT informa que um arquivo foi modificado.

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

O Estagiário Zoeiro envia esse arquivo alterado para a Área de Estágio

git add index.html

Comando que adiciona um ou mais arquivos para a Área de Estágio

Área de trabalho

Área de Consolidação

/O_Lindo_Site_Do_Cliente

Área de Estágio

(diretório .git)

index.html

Final do expediente chegando...

Por questões de segurança e boas práticas, o Estagiário Zoeiro envia os arquivos da Área de Estágio para a Área de consolidação.

git commit  -m "minhas alterações feitas durante o expediente"

Área de trabalho

Área de Consolidação

/O_Lindo_Site_Do_Cliente

Área de Estágio

index.html

"Então o git vai criar cópias dos arquivos que eu alterei e guardar dentro da Área de Consolidação?"

Lembra dessa pergunta feita anteriormente?

A resposta é não

O GIT tira uma "foto" de toda a estrutura do projeto.

git commit

Comando que efetua a consolidação dos arquivos da Área de Estágio.

Como o GIT tira essa "foto"?

SHA-1

Algorítmo matemático que mapeia os dados de entrada para uma sequência de caracteres de tamanho fixo

/O_Lindo_Site_Do_Cliente

index.html

/images

image.png

e53c244fec5778e3613c0dc2d7edcf71a5630d4e

aa1b2fb696a831c89c53f787e03d863691d2b671

4c511f16ef2644854d04cabebfcecc82be0eb04f

7cf2a17f3345635d59e063cffddd23573b6e4a75

7cf2a17f3345635d59e063cffddd23573b6e4a75

Hash SHA-1

O Estagiário Zoeiro pede para o git exibir todas as "fotos" que já foram tiradas do projeto

git log

Comando que exibe os estado atual da sua Área de Trabalho

commit e53c244fec5778e3613c0dc2d7edcf71a5630d4e
Author: cicerohen <cicerohen@gmail.com>
Date:   Fri Jun 24 14:42:47 2016 -0300

minhas alterações feitas durante o expediente

Fim de expediente..

Todas as alterações feitas estão mapeadas e guardadas pelo git, de forma segura.

Bom trabalho, Estagiário Zoeiro

Branches

(galhos/ramificações)

O que é um branch?

Branch é uma espécie de ponteiro  que aponta pra alguma "foto" tirada pelo git em um determinado momento no projeto.

Por padrão, o git cria um branch chamado master, que geralmente é usado pra referenciar a versão  estável do seu projeto

Você pode e DEVE criar branchs pra evitar eventuais perdas, durante o fluxo de trabalho.

Nenhuma alteração estará segura no GIT, caso você NÃO tenha feito commit( tirado uma foto) das alterações

Lembra disso?

Você não precisa mais fazer isso.

Use git. Use branchs.

Exemplificando...

meu_tcc_sobre_java.doc

Fluxo de Alterações

TCC Quase terminado, falta apenas inserir as referências bibliográficas

branch atual

master

git branch inserir_bibliografia

git checkout inserir_bibliografia

Criando um branch a partir do branch master

Alternando para o branch criado

TCC Quase terminado, falta apenas inserir as referências bibliográficas

branch atual

master

Inserindo as referências bibliográficas

inserir_bibliografia

Depois de você ter inserido as referências bibliográficas

Vamos tirar uma "foto"

git commit -m "inserindo as referências bibliográficas"

Quase terminado, falta apenas inserir as referências bibliográficas

branch atual

master

Trabalho concluido. Referências bibliográficas inseridas

inserir_bibliografia

Foto tirada. As alterações estão seguras.

git commit -m "inserindo as referências bibliográficas"

Temos agora um único arquivo no diretório, mas com duas versões diferentes.

Vamos agora atualizar a versão do branch master com a versão do branch inserir_bibliografia

Mudamos novamente para o branch master

Quase terminado, falta apenas inserir as referências bibliográficas

branch atual

master

Trabalho concluido. Referências bibliográficas inseridas

inserir_bibliografia

Foto tirada. As alterações estão seguras.

git commit -m "inserindo as referências bibliográficas"

Agora atualizamos a versão do master

git merge inserir_bibliografia

Quase terminado, falta apenas inserir as referências bibliográficas

branch atual

master

Trabalho concluido. Referências bibliográficas inseridas

inserir_bibliografia

Foto tirada. As alterações estão seguras.

git commit -m "inserindo as referências bibliográficas"

Versão do branch master agora está com as referências bibliográficas também

Como já fizemos o merge e ambos os branchs tem o mesmo conteúdo, podemos agora excluir o branch inserir_bibliografia.

git branch -D inserir_bibliografia

TCC com as referências biblográficas inseridas

branch atual

master

O branch master agora aponta para a foto tirada no branch inserir_bibliografia

Foto tirada. As alterações estão seguras.

git commit -m "inserindo as referências bibliográficas"

Feito. Fizemos as alterações no arquivo utilizando o git para versionar.

Obrigado

Git - Conceitos Básicos

By Cicero Viana (cicerohen)

Git - Conceitos Básicos

  • 653