4. Historia del SCM
Envia sus archivos Merge Manual
Envia sus archivos Archivos Sueltos
Foo Bar
5. Historia del SCM
Envia sus archivos Merge Manual
Envia sus archivos Archivos Sueltos
Foo Bar
Contras
No hay historia
El Merge es Manual
6. Historia del SCM
Envia sus archivos Merge Manual
Envia sus archivos Archivos Sueltos
Foo Bar
Contras
No hay historia
El Merge es Manual
7. Historia del SCM
Envia sus archivos Merge Manual
Envia sus archivos Archivos Sueltos
Foo Bar
Contras
No hay historia
El Merge es Manual
8. Historia del SCM
Envia sus patchs Merge Semi Automático
Envia sus patchs Pasaje de Patchs
Foo Bar
9. Historia del SCM
Envia sus patchs Merge Semi Automático
Envia sus patchs Pasaje de Patchs
Foo Bar
Pros
Con un Patch el merge es más
fácil
10. Historia del SCM
Envia sus patchs Merge Semi Automático
Envia sus patchs Pasaje de Patchs
Foo Bar
Pros
Con un Patch el merge es más
fácil
11. Historia del SCM
Envia sus patchs Merge Semi Automático
Envia sus patchs Pasaje de Patchs
Foo Bar
Pros Contras
Con un Patch el merge es más
No hay historia
fácil
Hay conflictos que no resuelve
el merge
12. Historia del SCM
Envia sus patchs Merge Semi Automático
Envia sus patchs Pasaje de Patchs
Foo Bar
Pros Contras
Con un Patch el merge es más
No hay historia
fácil
Hay conflictos que no resuelve
el merge
13. Historia del SCM
Envia sus patchs Merge Semi Automático
Envia sus patchs Pasaje de Patchs
Foo Bar
Pros Contras
Con un Patch el merge es más
No hay historia
fácil
Hay conflictos que no resuelve
el merge
21. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
22. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
23. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
24. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
25. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
Contras
Single Point of Failure
Necesita conexion con
repositorio para versionar
26. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
Contras
Single Point of Failure
Necesita conexion con
repositorio para versionar
27. Historia del SCM
Centralized VCS
Pros
Versionado de archivos
Manejo automático de merge
Colaboración con otros
Contras
Single Point of Failure
Necesita conexion con
repositorio para versionar
40. Git: Características
VCS Distribuido
Casi todas las operaciones son locales
Integridad (cada commit id es un checksum
SHA)
Díficil de perder información
Guarda Snapshots
42. Git: Características
Snapshots, not
Differences
git
Vs.
Guarda delta de archivos, y
others construye la version x, aplicando
todas las diferencias
43. Git: Características
Snapshots, not
Differences
git
Guarda snapshots de archivos
modificados y links de archivos
no modificados.
Vs.
Guarda delta de archivos, y
others construye la version x, aplicando
todas las diferencias
45. Git: Características
Cada archivo puede estar
en 3 estados: commited,
modified, staged The Three States
46. Git: Características
Cada archivo puede estar
en 3 estados: commited,
modified, staged The Three States
En el working copy
viven los modified (y
untracked). Es donde
se trabaja
47. Git: Características
Cada archivo puede estar
en 3 estados: commited, En staging viven los
modified, staged archivos marcados para The Three States
el próximo commit
En el working copy
viven los modified (y
untracked). Es donde
se trabaja
48. Git: Características
Cada archivo puede estar
en 3 estados: commited, En staging viven los
modified, staged archivos marcados para The Three States
el próximo commit
En el working copy En el repository,
viven los modified (y viven los archivos
untracked). Es donde commited.
se trabaja
49. Git: Características
Cada archivo puede estar
en 3 estados: commited, En staging viven los
modified, staged archivos marcados para The Three States
el próximo commit
En el working copy En el repository,
viven los modified (y viven los archivos
untracked). Es donde commited.
se trabaja
Flujo básico:
•checkout proyecto
•hago cambios
•stage files a comitear
•commit de staged
files.
50. Git: Características
Cada archivo puede estar
en 3 estados: commited, En staging viven los
modified, staged archivos marcados para The Three States
el próximo commit
En el working copy En el repository,
viven los modified (y viven los archivos
untracked). Es donde commited.
se trabaja
Importante!
Flujo básico: Si agrego un archivo al
•checkout proyecto stage, implica agregarlo
•hago cambios tal cual esta.
•stage files a comitear Si lo cambio después,
•commit de staged esos cambios no van al
files. commit, a menos que lo
vuelva a agregar!
52. Crear un Repo Local
git init (crea un repo git local para un
directorio)
$ mkdir myrepo
$ cd myrepo
$ git init
Initialized empty Git repository in /Users/cono/myrepo/.git/
Crea un directorio .git con un repo vacio.
A diferencia de SVN, solo existe un directorio .git por
proyecto
53. Clonar un Repo
Remoto
git clone (crea un repo local git que es una
copia del repo remoto especificado)
$ git clone git@github.com:zaubersoftware/git-connector.git
Cloning into git-connector...
remote: Counting objects: 200, done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 200 (delta 38), reused 102 (delta 11)
Receiving objects: 100% (200/200), 49.25 KiB, done.
Resolving deltas: 100% (38/38), done.
git soporta diferentes transportes: ssh, http, git, file.
57. Staging Area
Registra los archivos a incluir en el próximo
commit.
Se limpia al realizar un commit
Guarda el snapshot del archivo al momento
en que fue agregado al staging area. (cambios
posteriores no son incluidos, a menos que se
agregue otra vez)
58. Add Files to Stage
A medida que realizo cambios, puedo ir
marcando archivos (y su estado) para ser
incluidos en el próximo commit
$ git status
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#
a
$ git add a
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
#
new file: a
59. Add Files to Stage
A medida que realizo cambios, puedo ir
marcando archivos (y su estado) para ser
incluidos en el próximo commit Muestra archivos:
• A commitear (index)
$ git status • Tracked con cambios
# Untracked files: • Untracked
# (use "git add <file>..." to include in what will be committed)
#
#
a
$ git add a
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
#
new file: a
60. Add Files to Stage
A medida que realizo cambios, puedo ir
marcando archivos (y su estado) para ser
incluidos en el próximo commit Muestra archivos:
• A commitear (index)
$ git status • Tracked con cambios
# Untracked files: • Untracked
# (use "git add <file>..." to include in what will be committed)
#
#
a Agregamos un archivo al index. Es
$ git add a decir lo agregamos al próximo commit
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
#
new file: a
61. Add Files to Stage
A medida que realizo cambios, puedo ir
marcando archivos (y su estado) para ser
incluidos en el próximo commit Muestra archivos:
• A commitear (index)
$ git status • Tracked con cambios
# Untracked files: • Untracked
# (use "git add <file>..." to include in what will be committed)
#
#
a Agregamos un archivo al index. Es
$ git add a decir lo agregamos al próximo commit
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
#
new file: a Ahora a esta
registrado para el
próximo commit
62. Add Files to Stage
Si después de hacer add, cambiamos el
archivo, git recuerda la primera version
$ echo “un cambio” > a
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
#
new file: a
#
# 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
63. Add Files to Stage
Si después de hacer add, cambiamos el
archivo, git recuerda la primera version
$ echo “un cambio” > a
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
# Primera version de a. Lo que se
#
new file: a va a comitear
#
# 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
64. Add Files to Stage
Si después de hacer add, cambiamos el
archivo, git recuerda la primera version
$ echo “un cambio” > a
$ git status
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
# Primera version de a. Lo que se
#
new file: a va a comitear
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working
directory)
#
Cambios posteriores. No van al
#
modified: a
commit
65. Move, Rename, Reset
& Checkout
Move y Rename funcionan de forma similar
$ git mv a a.old
$ git rm a.old
unstage un archivo (mantiene los cambios en
la working copy)
$ git reset HEAD a.old
Borrar modificaciones locales (dangerous!)
$ git checkout a
TIP git status te muestra como hacer estos comandos
69. Repository Commit
Se genera a partir de los snapshots del staging
area
Todos los commit son locales.
Es una estructura que contiene: snapshots de
archivos comiteados, puntero al commit
anterior, metadata.
70. Commit Staged
Al hacer git commit, versionamos los cambios
del staging area en el repo local (commit)
$ git commit -m”primeros cambios de a”
[master (root-commit) 8536b60] primeros cambios
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
Recordar que el commit es a nuestro repo local!!
71. Commit Staged
Podemos hacer un git add y commit, de los
archivos que están tracked, de forma simple
con:
$ echo “hola” > b
$ git status
# 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
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#
b
$ git commit -a -m”commit de a y no de b”
72. Commit Staged
Podemos hacer un git add y commit, de los
archivos que están tracked, de forma simple
con:
$ echo “hola” > b
$ git status
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working
directory)
# Tracked: a
#
modified: a Untracked: b
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#
b
$ git commit -a -m”commit de a y no de b”
73. Commit Staged
Podemos hacer un git add y commit, de los
archivos que están tracked, de forma simple
con:
$ echo “hola” > b
$ git status
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working
directory)
# Tracked: a
#
modified: a Untracked: b
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#
b Hace un add de
$ git commit -a -m”commit de a y no de b” “a” y commit
74. Reviewing your
Changes
Para ver los cambios en la working copy pero
no en staging
$ git diff
# Muestra el diff entre la working copy y la staging area
Para ver los cambios entre la staging area y el
repositorio (el próximo commit)
$ git diff --staged
# Muestra el diff entre la staging area y el HEAD del repositorio
75. Commit History
Para ver la historia de commits. (git log tiene
muchas opciones, mirar!)
$ git log
commit 204359a005f459908b1304a77cced78deda1601e
Author: Mariano A. Cortesi <mariano@zaubersoftware.com>
Date: Fri Apr 8 20:26:33 2011 -0300
cambios de a
commit 8536b60ca6f7a5256e4778b27b6346393f36d9f3
Author: Mariano A. Cortesi <mariano@zaubersoftware.com>
Date: Fri Apr 8 17:54:27 2011 -0300
primeros cambios
76. Commit History
Para ver la historia de commits. (git log tiene
muchas opciones, mirar!)
$ git log El id de un
commit 204359a005f459908b1304a77cced78deda1601e commit es su SHA
Author: Mariano A. Cortesi <mariano@zaubersoftware.com>
Date: Fri Apr 8 20:26:33 2011 -0300
cambios de a
commit 8536b60ca6f7a5256e4778b27b6346393f36d9f3
Author: Mariano A. Cortesi <mariano@zaubersoftware.com>
Date: Fri Apr 8 17:54:27 2011 -0300
primeros cambios
80. Branches
Todo commit esta asociado a un branch
Existen remote branches y local branches
En los remote branches no se puede hacer
commit, son una referencia a un branch de un
repositorio remoto
81. Branches
Todo commit esta asociado a un branch
Existen remote branches y local branches
En los remote branches no se puede hacer
commit, son una referencia a un branch de un
repositorio remoto
El branch default es master (en terminos de
svn sería trunk). Se crea en el clone o init.
86. Local Branches
$ git branch testing
Importante!
Notar como cada
commit apunta a su
padre.
$ git checkout testing
87. Local Branches
branch master.
puntero al último
$ git branch testing commit del branch
Importante!
Notar como cada
commit apunta a su
padre.
$ git checkout testing
88. Local Branches
puntero a la branch
del working copy
branch master.
puntero al último
$ git branch testing commit del branch
Importante!
Notar como cada
commit apunta a su
padre.
$ git checkout testing
89. Local Branches
puntero a la branch
Crea un branch. No
del working copy
cambia el working copy
branch master.
puntero al último
$ git branch testing commit del branch
Importante!
Notar como cada
commit apunta a su
padre.
$ git checkout testing
90. Local Branches
puntero a la branch
Crea un branch. No
del working copy
cambia el working copy
branch master.
puntero al último
$ git branch testing commit del branch
Al crear un
Importante! branch se crea un
Notar como cada nuevo puntero
commit apunta a su
padre.
$ git checkout testing
91. Local Branches
puntero a la branch
Crea un branch. No
del working copy
cambia el working copy
branch master.
puntero al último
$ git branch testing commit del branch
Al crear un
Importante! branch se crea un
Notar como cada nuevo puntero
Cambia el working commit apunta a su
copy. Lo apunta al padre.
branch testing
$ git checkout testing
92. Local Branches
puntero a la branch
Crea un branch. No
del working copy
cambia el working copy
branch master.
puntero al último
$ git branch testing commit del branch
Al crear un
Importante! branch se crea un
Notar como cada nuevo puntero
Cambia el working commit apunta a su
copy. Lo apunta al padre.
branch testing
$ git checkout testing
el checkout
cambia el puntero
HEAD
93. Branch Merging
Fast Forward
Cuando el merge solo implica
mover un puntero
$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast forward
README | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
94. Branch Merging
Fast Forward
Cuando el merge solo implica
mover un puntero
Me paro en el branch
adonde quiero mergear
$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast forward
README | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
95. Branch Merging
Fast Forward
Cuando el merge solo implica
mover un puntero
Me paro en el branch
adonde quiero mergear
$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast forward
README | 1 - Indico el branch que
quiero mergear
1 files changed, 0 insertions(+), 1 deletions(-)
96. Branch Merging
Fast Forward
Cuando el merge solo implica
mover un puntero
El merge consistió en
Me paro en el branch mover el puntero master
adonde quiero mergear
$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast forward
README | 1 - Indico el branch que
quiero mergear
1 files changed, 0 insertions(+), 1 deletions(-)
97. Branch Merging
Se parte de un ancestro común
Three way merge y se aplican los cambios
98. Branch Merging
Se parte de un ancestro común
Three way merge y se aplican los cambios
Commit con 2 padres
99. Branch Merging
Se parte de un ancestro común
Three way merge y se aplican los cambios
Commit con 2 padres
Si hubo conflictos en el
merge. Deben resolverse
en el working copy
100. Rebase Branch
merge
master experiment
$ git checkout experiment
$ git rebase master rebase
First, rewinding head to replay your work on
top of it...
Applying: added staged command
101. Rebase Branch
1. Queremos incluir
en nuestro branch los
merge
cambios del master
master experiment
$ git checkout experiment
$ git rebase master rebase
First, rewinding head to replay your work on
top of it...
Applying: added staged command
102. Rebase Branch
1. Queremos incluir
en nuestro branch los
merge
cambios del master
master experiment
2. Calcula el patch
de cada commit de
experiment
$ git checkout experiment
$ git rebase master rebase
First, rewinding head to replay your work on
top of it...
Applying: added staged command
103. Rebase Branch
1. Queremos incluir
en nuestro branch los
merge
cambios del master
master experiment
2. Calcula el patch
de cada commit de
experiment
$ git checkout experiment
$ git rebase master rebase
First, rewinding head to replay your work on
top of it...
Applying: added staged command
3. Aplico los patchs
sobre master. uno por uno
104. Rebase Branch
1. Queremos incluir
en nuestro branch los
merge
cambios del master
master experiment
2. Calcula el patch
de cada commit de
experiment
$ git checkout experiment
$ git rebase master rebase
First, rewinding head to replay your work on
top of it...
Applying: added staged command
Importante!! Genera nuevos commits. No
usar con commits pusheados 3. Aplico los patchs
sobre master. uno por uno
107. Remote Repositories
Podemos tener más de un remote repository
Al hacer clone, se define el repositorio remoto
origin. (es un alias, se puede cambiar)
108. Remote Repositories
Podemos tener más de un remote repository
Al hacer clone, se define el repositorio remoto
origin. (es un alias, se puede cambiar)
Un remote branch es una referencia de un
branch local de un repositorio remoto.
109. Remote Repositories
Podemos tener más de un remote repository
Al hacer clone, se define el repositorio remoto
origin. (es un alias, se puede cambiar)
Un remote branch es una referencia de un
branch local de un repositorio remoto.
Tracking Branch: es una local branch
relacionada a un remote branch. (“la sigue” y
puede “actualizarla”). En el clone, master se
crea como tracking branch de origin/master.
110. Remote Repositories
git fetch trae toda la información de un
repositorio remoto (commits, branchs, tags).
Actualiza los remote branches (no realiza un
merge)
$ git fetch
From https://git.zaubersoftware.com/zauber/bob
b2ed962..982359c master -> origin/master
Si quiere hacer un merge + fetch (tracking
branches):
$ git pull
From https://git.zaubersoftware.com/zauber/bob
b2ed962..982359c master -> origin/master
111. Remote Repositories
Para crear un branch en base un remote
branch (y activar el tracking) [c/ checkout]
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/
origin/serverfix.
Switched to a new branch "serverfix"
git push envía los cambios de un local branch al
repositorio remoto. Se trata de un merge que
solo puede ser fast forward.
$ git push origin master
$ git push
112. Remote Repositories
Para crear un branch en base un remote
branch (y activar el tracking) [c/ checkout]
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/
origin/serverfix.
Switched to a new branch "serverfix"
git push envía los cambios de un local branch al
repositorio remoto. Se trata de un merge que
solo puede ser fast forward.
$ git push origin master
$ git push solo tracking branches
113. Tags (Local and
Shared)
Es un puntero a un commit
listar los tags
$ git tag
v0.1
v1.3
crear un tag
$ git tag -a v1.4 -m 'my version 1.4'
$ git tag -a v1.2 9fceb02
subir tags a un remote
$ git push origin v1.5
$ git push origin --tags
115. Embrace Branches
A diferencias de otros VCC, crear
branches es un proceso liviano que
probablemente hagamos todos los días.
Implica un cambio de concepto
116. Embrace Branches
Un branch para cada story.
branch: story-567
A diferencias de otros VCC, crear
branches es un proceso liviano que
probablemente hagamos todos los días.
Implica un cambio de concepto
117. Embrace Branches
Un branch para cada issue.
Un branch para cada story. branch: issue-9596
branch: story-567
A diferencias de otros VCC, crear
branches es un proceso liviano que
probablemente hagamos todos los días.
Implica un cambio de concepto
118. Embrace Branches
Un branch para cada issue.
Un branch para cada story. branch: issue-9596
branch: story-567
A diferencias de otros VCC, crear
branches es un proceso liviano que
probablemente hagamos todos los días.
Implica un cambio de concepto
Un branch para feature.
branch: feature-fb-connect
119. Embrace Branches
Un branch para cada issue.
Un branch para cada story. branch: issue-9596
branch: story-567
A diferencias de otros VCC, crear
branches es un proceso liviano que
probablemente hagamos todos los días.
Implica un cambio de concepto
Un branch para feature.
branch: feature-fb-connect
Un branch para probar una idea.
branch: cono-idea-loca
120. Stash for later
¿Que pasa si quiero cambiar de branch y tengo
cambios en mi working copy?
121. Stash for later
¿Que pasa si quiero cambiar de branch y tengo
cambios en mi working copy?
STASH IT!
122. Stash for later
¿Que pasa si quiero cambiar de branch y tengo
cambios en mi working copy?
STASH IT!
$ git stash
Saved working directory and index state Saves Working
"WIP on master: 049d078 added the index file" Copy & Staging
HEAD is now at 049d078 added the index file Area
(To restore them type "git stash apply")
123. Stash for later
¿Que pasa si quiero cambiar de branch y tengo
cambios en mi working copy?
STASH IT!
$ git stash
Saved working directory and index state Saves Working
"WIP on master: 049d078 added the index file" Copy & Staging
HEAD is now at 049d078 added the index file Area
(To restore them type "git stash apply")
$ git stash apply Applies Stashed
... data to current
working copy
124. Amend Fucked
Commits
¿Que pasa si hice mal el último commit ?
125. Amend Fucked
Commits
¿Que pasa si hice mal el último commit ?
Amend Commit
126. Amend Fucked
Commits
¿Que pasa si hice mal el último commit ?
Amend Commit
1. Hace los cambios
en el staging area
127. Amend Fucked
Commits
¿Que pasa si hice mal el último commit ?
Amend Commit
1. Hace los cambios
2. git commit --amend
en el staging area
128. Amend Fucked
Commits
¿Que pasa si hice mal el último commit ?
Amend Commit
1. Hace los cambios 3. Cambia el
2. git commit --amend
en el staging area mensaje de commit
129. Rewrite history
Squash Commits
Nos permite juntar commits
$ git rebase -i HEAD~3
pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file
130. Rewrite history
Squash Commits
Nos permite juntar commits
1. Hacemos un
$ git rebase -i HEAD~3
rebase interactivo de
los últimos 3 commits
pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file
131. Rewrite history
Squash Commits
Nos permite juntar commits
1. Hacemos un
$ git rebase -i HEAD~3
rebase interactivo de
los últimos 3 commits
2. Seleccionamos la pick f7f3f6d changed my name a bit
opción squash para los squash 310154e updated README formatting and added blame
que queremos hacer squash a5f4a0d added cat-file
desparecer
132. Rewrite history
Filter Branch
Nos permite hacer operaciones
sobre cada commit
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd
(21/21)
Ref 'refs/heads/master' was rewritten
133. Rewrite history
Filter Branch
Nos permite hacer operaciones
sobre cada commit
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd Borramos el archivo
(21/21) passwords.txt del repo
Ref 'refs/heads/master' was rewritten
134. Two commits, one
Working Copy
¿Que pasa si necesito 2 commits de un archivo?
135. Two commits, one
Working Copy
¿Que pasa si necesito 2 commits de un archivo?
Partial Staging!
136. Two commits, one
Working Copy
¿Que pasa si necesito 2 commits de un archivo?
Partial Staging!
1. git add -p
137. Two commits, one
Working Copy
¿Que pasa si necesito 2 commits de un archivo?
Partial Staging!
2. Elegir los diffs
1. git add -p
chunks a incluir
138. Two commits, one
Working Copy
¿Que pasa si necesito 2 commits de un archivo?
Partial Staging!
2. Elegir los diffs
1. git add -p 3. Commit del stage
chunks a incluir
139. Two commits, one
Working Copy
¿Que pasa si necesito 2 commits de un archivo?
Partial Staging!
2. Elegir los diffs
1. git add -p 3. Commit del stage
chunks a incluir
git add -i nos permite hacer esto y staging interactivo
141. Referencia
git help (man pages para todos los comandos)
Wiki Zauber (proximamente)
Pro Git (http://progit.org/book/)
Community Book (http://book.git-scm.com/)