An introductory talk to VCS. Learn the basics of git through a series of actual every-day usage & how-to use it to make your workflow more efficient.
As presented on DevConChile 2015
---
Una charla introductoria a los sistemas de control de versiones (VCS). Aprende lo básico de git a través de una serie de ejemplos de uso real y cómo puedes intregrarlo a tu entorno de trabajo para hacerlo más eficiente.
4. git?
“Git is a free and open source distributed version control system designed to
handle everything from small to very large projects with speed and efficiency.”
1
1 https://git-scm.com/
5. Que son los VCS?
Son sistemas que almacenan diferentes “versiones” de archivos a
través del tiempo.
Estas versiones pueden diferir casi completamente o en sólo un
carácter, da igual el tamaño del cambio.
El sistema puede o no dar acceso a dichas versiones para poder
consultarlas después, además de dar una idea de la historia del
proyecto.
6. Porqué git?
Git te permitirá manejar tu base de código de manera más rápida y
limpia que FTP u otras soluciones de VCS.
Por favor notar que los ejemplos utilizados durante esta presentación se harán en código, pero que git puede
manejar también imágenes, documentos u cualquier otro tipo de archivo (ej: Las versiones de presentación
fueron manejadas en un repositorio git2
).
2
https://github.com/felipecabargas/devcon-keynote
17. Git internals in real life
tag commit tree blob
tree blob
blob
README.md
LICENSE.md
lib/
main.rb
01e4a5 e9a4fa
f5b345
e7b3b3
1674ac
d45b2a
18. Ciclo de vida de un archivo en git
Nuevo Archivo
no seguido
vi FILE
Añadido al diff
preparado para commit
git add FILE
1er Commit
no contiene modificaciones
git commit
Editado
nuevas modificaciones
vi FILE
Añadido al diff
no contiene modificaciones
git add FILE
2do Commit
no contiene modificaciones
git commit
se crea el BLOB
o se referencia a uno
idéntico
se debieran pushear
los cambios
21. Modelo de “ramas”: Creando Ramas
source-code (master) $ git branch world-feature
source-code (master) $ git checkout world-
feature
source-code (world-feature) $
·
·
· MANY COMMITS ON THIS BRANCH
·
·
source-code (world-feature) $
branch & checkout
22. Modelo de “ramas”: Re-referenciando ramas
source-code (world-feature) $
·
·
· MANY COMMITS ON THIS BRANCH
·
·
source-code (world-feature) $ git checkout
master
source-code (master) $ git pull origin master
source-code (master) $ git checkout world-
feature
source-code (world-feature) $ git rebase master
First, rewinding head to replay your work on
top of it...
Applying: Add: world feature
Applying: Add: es version
source-code (world-feature) $ git push origin
world-feature
rebase