wokshop de git

Post on 17-May-2015

615 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Wokshop de Git realizado na Ci&T.

TRANSCRIPT

GITworkshop

usando Git desde 2008

O que é um SCM?

svn VS git

SVN

svn co

mmit svn update

GIT

git push git pull

git push remote

git pull remote

SVN :: CENTRALIZADOWorkflow - Repositório Central

desvantagens

svnDesenvolvimento Linear

Renomear arquivo/pasta dói

Repos Grandes

....

Resolução de Conflitos

git svn

git

“Git is a stupid content tracker.”(Peepcode Git Internals)

git github!=

Social Coding

Free para projetos Open Source

Firewall para “enterprise”

http://www.github.com

vantagens

Autonomia

Ágil

Repositórios Independentes

Resolução de conflitos

Repositórios Pequenos

git

desvantagens

gittCurva de Aprendizado

Quebra de paradigma

Necessário ter um processo definido

The Ruby on Rails Git repository download, which includes the full history of the project – every version of every file, weighs in at around 13M, which is not even twice the size of a single checkout of the project (~9M). The Subversion server repository for the same project is about 115M.

Peepcode Git internals página 12

curiosidade

Controle de versões distribuído

Workflow - Repositório Central

Necessário ter um processo definido

Workflow - Gerente de Integração

Necessário ter um processo definido

Você está sentado em sua mesa trabalhando em uma estória. De repente, sua SM chega perto de você e pede para você parar o que você está fazendo, pois

foi encontrado um bug show stopper.

era uma vez ...

http://www.google.com.br/imgres?start=116&um=1&hl=pt-BR&biw=1280&bih=636&tbm=isch&tbnid=6fTHDZKMmPElhM:&imgrefurl=http://www.clear-lines.com/blog/post/Automatically-exclude-bin-and-obj-folder-in-Tortoise-SVN.aspx&docid=OHbeiJsJUJ8saM&imgurl=http://www.clear-lines.com/blog/image.axd%253Fpicture

%253DAddFiles_thumb.png&w=387&h=433&ei=KgqFT82RBqr40gHv4djbBw&zoom=1&iact=hc&vpx=665&vpy=279&dur=306&hovh=149&hovw=133&tx=122&ty=109&sig=105001613950035108112&page=6&tbnh=140&tbnw=125&ndsp=23&ved=1t:429,r :9,s:116,i:104

resolvendo o problema

Qual o dev que está com o ambiente limpo?

Comitar as alterações (sem terminar a task)

Encontrar o bug;Implementar o fix;

Remover as changes anteriores;Comitar o fix;

Voltar alterações da change.

Criar branch;Comitar changes;Voltar no trunk; (?)

Comitar fix..

Quanto tempo levaria?

svn

Colocar changes no ‘stash’

Criar Branch

Git permite que o desenvolvedor seja mais ágil!

Quanto tempo levaria?

git

(*) http://martinfowler.com/bliki/FeatureBranch.html

filosofiaFeature Branch (*)

Só código que funciona no master

“Commit all the fucking time”

“Eu não gosto de resolver conflito!”(aleal)

Commit early,Commit often

Never Commit broken code

http://www.flickr.com/photos/traftery/4773457853/

Mão na massa

Configurando e Commit

# Configurando conta do usuário;$  git  config  -­‐-­‐global  user.name  "Alberto  Leal"

$  git  config  -­‐-­‐global  user.email  albertonb@gmail.com

$  git  config  -­‐-­‐global  color.ui  auto

# Criando estrutura de pastas do projeto e adicionando alguns arquivos;$  mkdir  ~/meu_projeto

$  cd  ~/meu_projeto

$  touch  README.txt  config.txt

   

# Iniciando um repositório git;$  git  initInitialized  empty  Git  repository  in  ~/meu_projeto/.git/

Configurando e Commit

# Interagindo com o repositório criado;$  git  status#  On  branch  master##  Initial  commit##  Untracked  files:#      (use  "git  add  <file>..."  to  include  in  what  will  be  committed)##   README.txt#   config.txtnothing  added  to  commit  but  untracked  files  present  (use  "git  add"  to  track)

$  git  add  .$  git  status#  On  branch  master##  Initial  commit##  Changes  to  be  committed:#      (use  "git  rm  -­‐-­‐cached  <file>..."  to  unstage)##   new  file:      README.txt#   new  file:      config.txt

Configurando e Commit

# Criando o primeiro commit;$  git  commit  -­‐m  “Initial  Commit”[master  (root-­‐commit)  4692340]  Initial  Commit  0  files  changed,  0  insertions(+),  0  deletions(-­‐)  create  mode  100644  README.txt  create  mode  100644  config.txt

$  git  logcommit  4692340f4f326a4120337185474153e65c808cd1Author:  Alberto  Leal  <albertonb@gmail.com>Date:      Sun  Mar  25  19:13:59  2012  -­‐0300

       Initial  Commit

tag

Blob

Tree

O que é um commit?

Commitsha1:  4692340f4f326a4120337185474153e65c808cd1

v1.0

Curva de Aprendizado

Quebra de paradigma

Commit(abcde)

/public

index.html

Commit(fghijl)

/public

index.html

whoami.html

Curva de AprendizadoO que é um commit?

Working DirectoryStage areaRepository

Curva de Aprendizado

Diff e Revertendo Commit# Abra o arquivo README.txt e altere o conteúdo;$  git  status#  On  branch  master#  Changed  but  not  updated:#      (use  "git  add  <file>..."  to  update  what  will  be  committed)#      (use  "git  checkout  -­‐-­‐  <file>..."  to  discard  changes  in  working  directory)##   modified:      README.txt#no  changes  added  to  commit  (use  "git  add"  and/or  "git  commit  -­‐a")

$  git  diffdiff  -­‐-­‐git  a/README.txt  b/README.txtindex  87147e2..3468b97  100644-­‐-­‐-­‐  a/README.txt+++  b/README.txt@@  -­‐1  +1,3  @@-­‐This  is  a  simple  document.\  No  newline  at  end  of  file+Este  é  um  documento  simples.++Estamos  dando  uma  olhada  no  Git.\  No  newline  at  end  of  file

Diff e Revertendo Commit# Para cancelar todas as modificações abaixo, basta dar um checkout no arquivo do repo;$  git  checkout  README.txt  

$  git  status#  On  branch  masternothing  to  commit  (working  directory  clean)

# Caso você tenha comitado as alterações feitas anteriormente, para reverter o commit, faça;$  git  log  commit  23a7e65d7353bd61935c627b13cad8890eea0de6Author:  Alberto  Leal  <albertonb@gmail.com>Date:      Wed  Apr  11  21:10:19  2012  -­‐0300

       Adding  some  lines

commit  909f2bbfc158b41619e90ea7679f3eb11dd46896Author:  Alberto  Leal  <albertonb@gmail.com>Date:      Wed  Apr  11  21:03:34  2012  -­‐0300

       Initial  Commit

$  git  revert  23a7e65d7353bd

Diff e Revertendo Commit$  git  log  

commit  143059e977ea838b78c054d37f03a82f82051a7bAuthor:  Alberto  Leal  <albertonb@gmail.com>Date:      Wed  Apr  11  21:11:13  2012  -­‐0300

       Revert  "Adding  some  lines"                This  reverts  commit  23a7e65d7353bd61935c627b13cad8890eea0de6.

commit  23a7e65d7353bd61935c627b13cad8890eea0de6Author:  Alberto  Leal  <albertonb@gmail.com>Date:      Wed  Apr  11  21:10:19  2012  -­‐0300

       Adding  some  lines

commit  909f2bbfc158b41619e90ea7679f3eb11dd46896Author:  Alberto  Leal  <albertonb@gmail.com>Date:      Wed  Apr  11  21:03:34  2012  -­‐0300

       Initial  Commit

$  git  branch  *  master

$  git  branch  *  master

$  git  branch  new_feature$  git  branch*  master    new_feature

$  git  checkout  -­‐b  another_featureSwitched  to  a  new  branch  'another_feature'

$  git  branch*  another_feature    master    new_feature

Criar BranchBranch

$  touch  a.txt  b.txt  c.txt  d.txt  e.txt

$  git  status  #  On  branch  another_feature#  Untracked  files:#      (use  "git  add  <file>..."  to  include  in  what  will  be  committed)##   a.txt#   b.txt#   c.txt#   d.txt#   e.txtnothing  added  to  commit  but  untracked  files  present  (use  "git  add"  to  track)

$  git  add  .  &&  git  commit  -­‐m  "Adding  new  files"[another_feature  08f9fbe]  Adding  new  files  0  files  changed,  0  insertions(+),  0  deletions(-­‐)  create  mode  100644  a.txt  create  mode  100644  b.txt  create  mode  100644  c.txt  create  mode  100644  d.txt  create  mode  100644  e.txt

$  git  checkout  new_feature$  lsREADME     alberto.txt   oi.txt     ola.txt

BranchCriar Branch

Você está sentado em sua mesa trabalhando em uma estória. De repente, sua SM chega perto de você e pede para você parar o que você está fazendo, pois

foi encontrado um bug show stopper.

lembra ...?

$  git  checkout  another_feature$  lsREADME     alberto.txt   c.txt     e.txt     ola.txta.txt     b.txt     d.txt     oi.txt

$  git  status#  On  branch  another_feature#  Changed  but  not  updated:#      (use  "git  add  <file>..."  to  update  what  will  be  committed)#      (use  "git  checkout  -­‐-­‐  <file>..."  to  discard  changes  in  working  directory)##   modified:      a.txt#   modified:      b.txt#   modified:      c.txt#   modified:      d.txt#   modified:      e.txt#no  changes  added  to  commit  (use  "git  add"  and/or  "git  commit  -­‐a")

$  git  stash  save  login_with_ajaxSaved  working  directory  and  index  state  On  another_feature:  login_with_ajaxHEAD  is  now  at  08f9fbe  Adding  new  files

$  git  status#  On  branch  another_featurenothing  to  commit  (working  directory  clean)

StashColocar changes no ‘stash’

$  git  stash  liststash@{0}:  On  another_feature:  login_with_ajax

$  git  stash  apply  stash@{0}#  On  branch  another_feature#  Changed  but  not  updated:#      (use  "git  add  <file>..."  to  update  what  will  be  committed)#      (use  "git  checkout  -­‐-­‐  <file>..."  to  discard  changes  in  working  directory)##   modified:      a.txt#   modified:      b.txt#   modified:      c.txt#   modified:      d.txt#   modified:      e.txt#no  changes  added  to  commit  (use  "git  add"  and/or  "git  commit  -­‐a")

StashColocar changes no ‘stash’

$  git  checkout  master

$  git  status  #  On  branch  masternothing  to  commit  (working  directory  clean)

$  touch  a.txt  &&  echo  "Workshop  de  Git"  >  a.txt$  git  add  .$  git  commit  -­‐m  “Adding  new  file  a”[master  e88ac64]  Adding  file  ad  1  files  changed,  1  insertions(+),  0  deletions(-­‐)  create  mode  100644  a.txt

$  git  checkout  another_featureSwitched  to  a  new  branch  'another_feature'

$  echo  "CI&T  apresenta  Workshop  de  Git"  >  a.txt

$  git  commit  -­‐am  "Changing  on  file  a"[another_feature  d7a6544]  Changing  on  file  a  1  files  changed,  1  insertions(+),  1  deletions(-­‐)

$  git  checkout  masterSwitched  to  branch  'master'

Resolução de conflitosResolvendo conflitos

$  git  merge  another_featureAuto-­‐merging  a.txtCONFLICT  (add/add):  Merge  conflict  in  a.txtAutomatic  merge  failed;  fix  conflicts  and  then  commit  the  result.

$  git  diffdiff  -­‐-­‐cc  a.txtindex  f4e2830,ae35584..0000000-­‐-­‐-­‐  a/a.txt+++  b/a.txt@@@  -­‐1,1  -­‐1,1  +1,5  @@@-­‐  Workshop  de  Git  -­‐Cit  apresenta  workshop  de  git.++<<<<<<<  HEAD++Workshop  de  Git++=======++Cit  apresenta  workshop  de  git.++>>>>>>>  another_feature

$  git  commit  -­‐am  "Merging  branches"[master  36e2a5d]  Merging  branches

$  git  logcommit  36e2a5d1b4cdc74d967ced02a29190321adefbecMerge:  e88ac64  d7a6544Author:  Alberto  Leal  <albertonb@gmail.com>Date:      Wed  Apr  11  22:00:50  2012  -­‐0300        Merging  branches

Resolução de conflitosResolvendo conflitos

QUEM USA?•Linux Kernel•Git•Perl•PHP•Eclipse•Gnome•KDE•Ruby on Rails•Android•PostgreSQL•Debian•X.org

•jQuery•node.js•Redis•CakePHP•mongodb•...

FERRAMENTAS

•Github•Gitorious•SmartGit•Tortoise•...

INSTALANDO GIT

Ubuntusudo apt-get install git-core git-doc git-svn git-gui gitk ssh

Windowshttp://msysgit.github.com/

adesivos na minha mesa

top related