Controlando seu projeto com Git

Gabriel Prates

Sobre mim

Gabriel Prates

gabrielprates.com

Controle de Versão

Um sistema de controle de versão (ou versionamento), VCS (do inglês version control system) ou ainda SCM (do inglês source code management) na função prática da Ciência da Computação e da Engenharia de Software, é um software

com a finalidade de gerenciar diferentes

versões no desenvolvimento de um

documento qualquer.

Hello Git

Git é um sistema de controle de versão gratuito e de código aberto, projetado para lidar com tudo, desde pequenos a grandes projetos, com velocidade e eficiência.

Criado por Linus Torvalds (criador do Linux)

 

Lançado em 2005

Por que?

  • Histórico de alterações

Por que?

  • Histórico de alterações

 

  • Trabalhar em equipe

Por que?

  • Histórico de alterações

 

  • Trabalhar em equipe

 

  • Guardar versões

Por que?

  • Histórico de alterações

 

  • Trabalhar em equipe

 

  • Guardar versões

 

  • Armazenamento seguro

O que controlar

com Git?

  • Controlar trabalhos de faculdade
    • (monografia, exercícios, trabalhos)

 

  • Controlar seus arquivos pessoais
    • (saves de jogos, fotos)

 

  • Seu trabalho, e o da sua equipe

 

  • Qualquer coisa no seu PC

Download

GUI Clients

Vamos nos apresentar

$ git config user.name "Gabriel Prates"
$ git config user.email "gabriel.prates@email.com"

Configuração local (repositório) de usuário

Vamos nos apresentar

$ git config --global user.name "Gabriel Prates"
$ git config --global user.email "gabriel.prates@email.com"

Configuração global de usuário

Exemplo 1

Lista de filmes

$ mkdir filmes

$ cd filmes

Usando um editor de texto qualquer, crie uma lista de filmes  que você gosta.

0) Star Wars IV
1) Star Wars V
2) Star Wars VI

Salve seu arquivo como lista.txt e volte para o terminal.

Exemplo 1

Adicione 3 ou 4 filmes.

Exemplo 1

$ mkdir filmes

$ cd filmes

$ 

Lista de filmes

Exemplo 1

$ mkdir filmes

$ cd filmes

$ git init
Initialized empty Git repository in /home/gabriel/filmes/.git/

$

Vamos iniciar nosso repositório!

Lista de filmes

Exemplo 1

$ git init
Initialized empty Git repository in /home/gabriel/filmes/.git/

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	lista.txt

nothing added to commit but untracked files present (use "git add" to track)

$

Qual a situação dos arquivos no repositório?

Lista de filmes

Exemplo 1

$ git init
Initialized empty Git repository in /home/gabriel/filmes/.git/

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	lista.txt

nothing added to commit but untracked files present (use "git add" to track)

$ git add lista.txt

$

Vamos adicionar nosso arquivo ao repositório...

Lista de filmes

Exemplo 1

$ git add lista.txt

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   lista.txt


$

...ver nossa situação atual...

Lista de filmes

Exemplo 1

$ git add lista.txt

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   lista.txt


$ git commit -m "Arquivo inicial"
[master (root-commit) e2cf4eb] Arquivo inicial
 1 file changed, 3 insertions(+)
 create mode 100644 lista.txt

$

... e gravar o arquivo.

Lista de filmes

Exemplo 1

$ git commit -m "Arquivo inicial"
[master (root-commit) e2cf4eb] Arquivo inicial
 1 file changed, 3 insertions(+)
 create mode 100644 lista.txt

$ git status
On branch master
nothing to commit, working directory clean

$

Como estamos?

Lista de filmes

Adicione mais filmes à sua lista!

0) Star Wars IV
1) Star Wars V
2) Star Wars VI
3) Star Wars I
4) Star Wars II
5) Star Wars III
6) Toy Story
7) Toy Story 2
8) Toy Story 3

Salve o arquivo e volte para o terminal.

Exemplo 1

Exemplo 1

$ git status
On branch master
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:   lista.txt

no changes added to commit (use "git add" and/or "git commit -a")

$

Veja o que foi alterado.

Lista de filmes

Exemplo 1

$ git status
On branch master
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:   lista.txt

no changes added to commit (use "git add" and/or "git commit -a")

$ git add lista.txt

$ git commit -m "Adicionando mais filmes"
[master b20ca89] Adicionando mais filmes
 1 file changed, 6 insertions(+)

$

Rastreando e gravando.

Lista de filmes

Exemplo 1

$ git status
On branch master
nothing to commit, working directory clean

$

Tudo limpo!

Lista de filmes

Exemplo 1

$ git log
commit b20ca89f575bcc50f6274fb0039a1ca43a469232
Author: Gabriel Prates <gabsprates@gmail.com>
Date:   Tue Nov 3 22:54:02 2015 -0200

    Adicionando mais filmes

commit e2cf4ebda7751921f27cd8316e57b8e9d253f685
Author: Gabriel Prates <gabsprates@gmail.com>
Date:   Tue Nov 3 22:44:42 2015 -0200

    Arquivo inicial

$

Você disse "histórico"?

Lista de filmes

Dicionário

  • git init

    • Criar um repositório Git vazio, ou reiniciar um existente.

 

  • git status
    • Exibe o estado do diretório de trabalho.

 

  • git add
    • Adiciona arquivos à área de stage.

 

  • git commit
    • Grava o estado, ou uma 'imagem', da área de stage.

 

  • git log
    • Exibe o histórico de commit's de uma branch.

Área de "Stage"?

OK!

 

Já vimos o básico, vamos colocar a mão na massa e descobrir mais sobre o Git.

 

(:

Verificando mudanças

  • Mudanças não rastreadas
    • git diff

 

  • Mudanças rastreadas
    • git diff --staged

 

  • Mudanças rastreadas e não rastreadas
    • git diff <COMMIT>

 

  • Mudanças já comitadas
    • git diff <COMMIT_A>..<COMMIT_B>

Desfazendo mudanças

  • Mudanças não rastreadas
    • git checkout -- <ARQUIVO>

 

  • Mudanças rastreadas
    • git reset -- <ARQUIVO>

 

  • Mudanças já comitadas
    • git revert <COMMIT>

Podemos fazer muito mais!

Aqui trabalhamos com repositórios locais.

 

Podemos também trabalhar com repositórios online, e assim, compartilhar o projeto.

 

Para saber mais:

Este é o começo da sua saga com o Git!

Boa jornada!!!

(:

Git

By Gabriel Prates