começando com

versionamento, git e github

@Matheus Albuquerque

#BEPiD

@Murilo da Paixão

o que veremos?

Controle de Versão?

Git?

Coding Goes Social

Outras Coisas Legais

felicidade

tempo de nivelamento

controle de versão?

mas antes...

uma pequena substituição...

Matheus

Murilo

Lourenço

Rafael

sobrescreveu o código de outra pessoa por acidente?

quem aqui já...

teve dificuldades em saber:

quem aqui já...

quais as alterações efetuadas em um programa?

quando foram feitas?

quem fez?

teve dificuldade em recuperar o código de uma versão anterior à que está em produção?

quem aqui já...

teve problemas em manter variações do sistema ao mesmo tempo?

quem aqui já...

imagine isso em...

image/svg+xml

desenvolvimento

testes

produção

e onde entra versionamento?

image/svg+xml

histórico

colaboração

variações

  • registro de toda a evolução do sistema, cada alteração sobre cada arquivo;

  • quem fez o quê, quando e onde

  • retornar a um estado anterior se você descobrir que alguma modificação foi um erro/má idéia.

e onde entra versionamento?

> histórico

e onde entra versionamento?

> histórico

> colaboração

  • vários desenvolvedores trabalhando em paralelo sobre os mesmo arquivos sem que um sobrescreva o código de outro

  • evita o reaparecimento de defeitos e perda de funcionalidades

e onde entra versionamento?

> colaboração

e onde entra versionamento?

> variações

  • mantém diferentes linhas de evolução do mesmo projeto

e onde entra versionamento?

> variações

e onde entra versionamento?

image/svg+xml

acompanhar e fornecer controle de alterações no código fonte

manter diferentes versões do mesmo código

software desenvolvido de forma colaborativa :)

e onde entra versionamento?

o que não é versionar

controle de versão?

controle de versão!

controle de versão

> funcionamento

repositório

área de trabalho

update

commit

sistemas de controle de versionamento centalizados

sistemas de controle de versionamento distribuídos

VS.

sistemas de controle de versão

> centralizados

  • Único repositório central​;

  • Cópias de trabalho são mantidas pelos desenvolvedores;

  • Estrutura Commit/Update;

sistemas de controle de versão

> centralizados

repositório central

Gustavo

Felipe

David

update

commit

update

commit

update

commit

sistemas de controle de versão

> centralizados

sistemas de controle de versão

> distribuídos

  • Cada desenvolvedor mantém um repositório

  • Estrutura pull/push/commit

  • Comunicação mínima através da internet, commits mais rápidos :)

sistemas de controle de versão

> distribuídos

repositório

área de trabalho

David

update

commit

sistemas de controle de versão

> distribuídos

repositório central

Gustavo

Felipe

David

pull

push

pull

push

pull

push

sistemas de controle de versão

> distribuídos

até que...

bit.ly/linus-git

filosofia

filosofia

> outros

pensamos em dados como listas de mudanças baseadas em arquivos

filosofia

> outros

filosofia

> git

pensamos em dados como snapshots de nossos arquivos

filosofia

> git

fluxo

  • Parte essencial do entendimento do Git;

  • três estados que seus arquivos podem assumir e cada estado corresponde a uma das três seções de um projeto.

fluxo de funcionamento

> os três estados

os três estados

> modified/untracked

  • Git vê arquivos untracked e modified de forma semelhante;

  • Untracked significa que o arquivo é novo em seu projeto;

  • Modified significa que o arquivo já existia, mas foi alterado, de modo que não está pronto para ser snapshotted pelo Git;

  • Se dá em seu diretório de trabalho.

> staged

  • É quando um arquivo está pronto para o Git tirar um snapshot deste e armazenar seu estado atual.

  • Se dá na staging area/index.

os três estados

> commited

  • É quando o Git oficialmente tirou um snapshot dos arquivos da staging area e o armazenou;

  • Se dá no diretório .git.

os três estados

fluxo de funcionamento

> os três estados

HEAD é um ponteiro para a branch ou commit que a qual foi feito checkout pela última vez - e que será o pai de um novo commit.

fluxo de funcionamento

>bônus

usando

usando

> comandos básicos

init

$ mkdir myProject
$ cd myProject
$ git init

status

$ git status

config

$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"

usando

> comandos básicos

add

$ git add --all 

commit

$ git commit -m "Changed <x> feature in my project"

log

$ git log

reset

$ git reset <myFile>

usando

> branches

branch

$ git branch <myFeature>

checkout

$ git checkout <myFeature>
$ git checkout master

merge

$ git merge <myFeature>

delete

$ git branch -d <myFeature>

usando

> tags

tag

$ git tag <myVersion>

annotated

$ git tag -a <myVersion> -m "Version 1 release"

delete*

$ git tag -d <myVersion>

perguntas?

intervalo

coding goes social

github.com

coding goes social

> conceitos

  • Forking

  • Pull Requests

  • Issues/Issue Comments

  • Seguidores

  • Organizações

  • Times

  • ...

  • Octocat

outras coisas legais

> GUIs

outras coisas legais

> GUIs

outras coisas legais

> GUIs

outras coisas legais

> GUIs

outras coisas legais

> GUIs

outras coisas legais

> alternativas

outras coisas legais

outras coisas legais

> importância

outras coisas legais

> importância

bit.ly/github-cv

outras coisas legais

> importância

outras coisas legais

> importância

outras coisas legais

> importância

  • Departamento de Tecnologia da Informação do Banco Central do Brasil

  • Portal de Software Livre do Governo

  • Portal Brasileiro de Dados Abertos

  • Empresa de Tecnologia e Informações da Previdência Social (DATAPREV)

  • 20+

perguntas?

final challenge

stickers :)

@mabrasil

@pogist

</thanks>

Uma introdução a Versionamento, Git e outras coisas

By Matheus Brasil

Uma introdução a Versionamento, Git e outras coisas

  • 1,282