#!/usr/bin/env pinpoint
# default style
[../_images/Sketch27014711.png]
[font=Sans 100px]
[fill]
[center]
[text-align=left]
# presentation starts here
--- [font=Serif 100px] [text-align=center]
GIT + GIT-SVN
---
GIT Básico
---
O "index"
O conceito do "index" é o que mais diferencia o GIT do SVN.
"index" são as alterações que serão mandadas, não os arquivos.
---
git add file.py - Coloca as alterações do arquivo no "index".
(Se o arquivo nunca esteve no "index", vai o arquivo inteiro).
---
git commit - Guarda as alterações como uma revisão.
("git commit -a" adiciona TODAS alterações no "index" e gera um commit.)
git push - Envia as alterações para um servidor (normalmente, primeira
execução é git push origin master, onde origin é um alias
para o servidor).
---
Até aqui, SVN parece mais simples porque para mandar pro servidor é
um passo só (svn commit) vs 3 do GIT (git add, git commit,
git push).
---
git add -p file.py - Adição parcial de conteúdo.
Para aqueles momentos de "fiz duas alterações, de dois issues diferentes".
--- [left] [shading-opacity=1.0]
@@ -485,7 +485,7 @@ class GerenciadorForm(TestCase):
"""
curso = EntidadeCursoCurriculoGraduacao.objects.get(pk=1001)
- ano_periodo = AnoPeriodoGraduacao.objects.get(pk=1)
+ ano_periodo = AnoPeriodoGraduacao.objects.get(pk=1001)
# Populando o field com None.
dados = {'pessoa_fisica': u'5',
Stage this hunk [y,n,q,a,d,/,e,?]?
(Ainda útil para aquela última verificada antes de comitar.)
--- [../_images/grinch-smile.jpg]
Podem ser feitos vários commits sem que sejam enviados ao servidor.
"Meu branch pode estar quebrado totalmente e ninguém vai ver!"
--- [../_images/boycrying.jpg]
Mas eu uso SVN!
--- [../_images/baby-smile.jpg]
GIT-SVN to the rescue!
---
GIT-SVN cria e mantém um repositório GIT usando um servidor SVN.
Alguns comandos mudam.
---
git add continua igual (ainda com -p)
git commit continua igual.
Pelo menos isso...
---
Criar o repositório GIT a partir do SVN:
git svn clone http://blahblahblah.com/blah/blah/branch/blah
---
git svn clone https://ucsvirtual.ucs.br/sesi/svn/yoshi/branches/12266
A yoshi/google/alias/tests.py
A yoshi/google/alias/models.py
A yoshi/google/alias/urls.py
A yoshi/google/alias/forms.py
A yoshi/urls.py
A requirement.txt
W: +empty_dir: yoshi/autenticacao/esqueceu_senha/fixtures
W: +empty_dir: yoshi/autenticacao/login/templates/busca
W: +empty_dir: yoshi/core/busca/templates
W: +empty_dir: yoshi/core/geral/templates/search
W: +empty_dir: yoshi/templates/agenda/busca
r4531 = b3667a084e7d69080e0f1c7235b94dab9cb5a326 (refs/remotes/git-svn)
A yoshi/financeiro/cadastro_beneficio/__init__.py
A yoshi/financeiro/cadastro_beneficio/models.py
A yoshi/financeiro/__init__.py
r4532 = 65ce3a96d11c13d0be24836af3a276561885118c (refs/remotes/git-svn)
M yoshi/settings.py
M yoshi/modulos.py
---
Pro-tip: Isso clona o repositório e todos os commits.
Portanto, não se alarme.
---
git svn rebase = svn up
Na verdade, irá recuperar tudo que foi feito desde a última revisão
e aplicar os commits locais, nessa ordem.
--- [top] [clone2.png]
Visão a partir do clone:
--- [top] [rebase2.png]
Visão depois do rebase:
---
git svn dcommit = svn commit
Faz o "upload" dos commits locais para o servidor.
---
Ok, qual a vantagem no final?
---
* Commits mais granulares.
* Branches locais.
* GIT Flow para um fluxo de trabalho conveniente.
* git stash: Atira as alterações para uma biblioteca.
* Compatível com qualquer versão do SVN.
--- [../_images/tumblr_m3hn8kf49c1ropetlo1_400.jpg]
Novo workflow:
1. Alterar código.
2. git add alteração.
3. Mais alterações? Goto 1.
4. git svn rebase para verificar alterações upstream.
5. git commit.
6. Não satisfeito? Goto 1.
7. Tudo Ok? git svn dcommit
---