SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
La palabra de git
O cómo usar el control de versiones para trabajar feliz.
DevCon Chile 2015
Felipe Cabargas
Frontend Developer | Startup Podium | Reciclar.io
Ex piloto de X-Wing
git?
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/
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.
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
Porqué git?
Funciona casi completamente de forma local.
Porqué git?
Nunca borra información (bueno… casi nunca).
Porqué git?
Funciona de manera distribuida: Descentraliza siendo centralizado.
Porqué git?
SOURCE: http://nvie.com/posts/a-successful-git-branching-model/
How-to git
Instalando Git
http://devcon.cabargas.me/installguide
Workflow básico: Inicio, Remotos y Clonado
~ $ mkdir source-code
~ $ cd source-code
source-code $ git init
Initialized empty Git repository in /Users/Felipe/
source-code/.git/
source-code $ git remote add origin
git@example.com:felipecabargas/source-code.git
source-code $
~ $ git clone git@example.com:felipecabargas/
source-code.git
Cloning into ‘source-code'...
remote: Counting objects: 1, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 1 (delta 1), reused 0 (delta 0),
pack-reused 1
Receiving objects: 100% (1/1), 3.14 MiB | 1.83
MiB/s, done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done.
~ $ cd source-code
source-code $
init & remotes clone
Workflow básico: Cambios y Sincronización
source-code $ vi README.md
source-code $ ✗ git add README.md
source-code $ git commit -m “Add: README file”
Created commit 8b3b8b3: Add: README file
1 files changed, 120 insertions(+), 0 deletions(-)
source-code $ git push origin master
source-code $ git push REMOTE BRANCH
source-code $ git status
On branch master
nothing to commit, working directory clean
source-code $ git pull
remote: Counting objects: 1, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 1 (delta 1), reused 0 (delta 1)
Receiving objects: 100% (1/1), 1.78 KiB | 43.00 KiB/
s, done.
Resolving deltas: 100% (1/1), completed with 0 local
objects.
From git.example.com:code
* branch master -> FETCH_HEAD
9018073..8b3b8b3 master -> origin/master
Updating 9018073..8b3b8b3
add, commit & push status & pull
Autopsia a git
Git internals
tag commit tree blob
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
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
Modelo de “ramas”
https://gitlab.com/cabargas/git-ex/network/master
proyecto
Modelo de “ramas”
source-code $ git log —-oneline —-graph
* 80be68a Update: schema
* 31072d6 Fix: Refactor table to avoid
reservated column name
* 3f94aac Added pry
* 235e78e Add: belongs_to account
* 48d1c45 Add contribution guide
* df7709e Add changelog
* 6d3fb18 Add: act_as_nested_set rule to Account
model
* c1048c7 Update: schema
* eff0920 Add: model Account
* cd97c6c Update: schema
* 5552c51 Add: account_id relationship for Users
* 51b6fe3 Update: schema
* a5a4611 Add: Devise User model
* 28f2489 Add: Autogenerated Rails 4.2 app
* c11e740 add README
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
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
Modelo de “ramas”: Mezclando ramas
source-code (world-feature) $ git push origin
new-branch
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 590 bytes | 0
bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@gitlab.com:cabargas/git-ex.git
source-code (world-feature) $ git checkout
master
source-code (world-feature) $ git merge —-no-ff
world-feature
merge
Q&A
Gracias
Sulpáy
Danke
Thanks
спасибо
ขอบคุณค่ะ
谢谢
ありがとうございました
@juanpintoduran
http://blog.nondrivendevelopment.com
SLIDES, REPOSITORIES & EXAMPLES:
http://devcon.cabargas.me

Más contenido relacionado

Destacado

Максим все лучшее за 5 лет часть1
Максим все лучшее за 5 лет часть1Максим все лучшее за 5 лет часть1
Максим все лучшее за 5 лет часть1spmx
 
Grupo 4 primera pareja primero seccion b
Grupo 4 primera pareja primero seccion bGrupo 4 primera pareja primero seccion b
Grupo 4 primera pareja primero seccion bDga Dga
 
Puntos libres canaima
Puntos libres canaimaPuntos libres canaima
Puntos libres canaimaCBIT09
 
Mel norman media sauce - workshop 4
Mel norman   media sauce - workshop 4Mel norman   media sauce - workshop 4
Mel norman media sauce - workshop 4Anna-Marie Taylor
 
Smartphones vs. Tablets: An Analysis
Smartphones vs. Tablets: An AnalysisSmartphones vs. Tablets: An Analysis
Smartphones vs. Tablets: An AnalysisBilly Schwartz
 
Alex Steffen: How to change absolutely everything without leaving town
Alex Steffen: How to change absolutely everything without leaving townAlex Steffen: How to change absolutely everything without leaving town
Alex Steffen: How to change absolutely everything without leaving townCollaboratory Melbourne
 
Antología de Liderazgo
Antología de LiderazgoAntología de Liderazgo
Antología de LiderazgoHILDALLP
 
ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014
ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014
ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014Global Development Institute
 
Plan de contingencia polvora 2013.
Plan de contingencia polvora 2013.Plan de contingencia polvora 2013.
Plan de contingencia polvora 2013.alconcepcion
 
Modul microsoft word beginner
Modul microsoft word beginnerModul microsoft word beginner
Modul microsoft word beginnerAyah'nya Rizam
 
PRESENTATION AIRWELL VRF 2014 GB
PRESENTATION  AIRWELL VRF 2014 GBPRESENTATION  AIRWELL VRF 2014 GB
PRESENTATION AIRWELL VRF 2014 GBArjang Ahmadi
 

Destacado (20)

Максим все лучшее за 5 лет часть1
Максим все лучшее за 5 лет часть1Максим все лучшее за 5 лет часть1
Максим все лучшее за 5 лет часть1
 
Facebook paso a paso
Facebook paso a pasoFacebook paso a paso
Facebook paso a paso
 
Sepa handbook
Sepa handbookSepa handbook
Sepa handbook
 
Grupo 4 primera pareja primero seccion b
Grupo 4 primera pareja primero seccion bGrupo 4 primera pareja primero seccion b
Grupo 4 primera pareja primero seccion b
 
Puntos libres canaima
Puntos libres canaimaPuntos libres canaima
Puntos libres canaima
 
Novena a san Juan Eudes
Novena a san Juan EudesNovena a san Juan Eudes
Novena a san Juan Eudes
 
Mel norman media sauce - workshop 4
Mel norman   media sauce - workshop 4Mel norman   media sauce - workshop 4
Mel norman media sauce - workshop 4
 
Smartphones vs. Tablets: An Analysis
Smartphones vs. Tablets: An AnalysisSmartphones vs. Tablets: An Analysis
Smartphones vs. Tablets: An Analysis
 
manowar
manowarmanowar
manowar
 
Alex Steffen: How to change absolutely everything without leaving town
Alex Steffen: How to change absolutely everything without leaving townAlex Steffen: How to change absolutely everything without leaving town
Alex Steffen: How to change absolutely everything without leaving town
 
Der Erfolgstag
Der ErfolgstagDer Erfolgstag
Der Erfolgstag
 
Antología de Liderazgo
Antología de LiderazgoAntología de Liderazgo
Antología de Liderazgo
 
ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014
ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014
ESID - Public Sector Reform - Yanguas & Bukenya at DSA 2014
 
Democracia total
Democracia totalDemocracia total
Democracia total
 
Plan de contingencia polvora 2013.
Plan de contingencia polvora 2013.Plan de contingencia polvora 2013.
Plan de contingencia polvora 2013.
 
Hippie
HippieHippie
Hippie
 
Modul microsoft word beginner
Modul microsoft word beginnerModul microsoft word beginner
Modul microsoft word beginner
 
Quién es y qué hace FPL Logística
Quién es y qué hace FPL LogísticaQuién es y qué hace FPL Logística
Quién es y qué hace FPL Logística
 
Calaminas galvanizadas
Calaminas galvanizadasCalaminas galvanizadas
Calaminas galvanizadas
 
PRESENTATION AIRWELL VRF 2014 GB
PRESENTATION  AIRWELL VRF 2014 GBPRESENTATION  AIRWELL VRF 2014 GB
PRESENTATION AIRWELL VRF 2014 GB
 

Similar a The Gift of Git [Español: La Palabra de Git]

Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIquaip
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con gitch1l3no
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/pushAlexis Lopez
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part IIMax Rodriguez
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014quaip
 
Uso de git para el mantenimiento de parches locales o públicos
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicosIñaki Arenaza
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GITmaxfontana90
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC sidelab
 
Uso de git (Cursos de e-ghost 2011)
Uso de git (Cursos de e-ghost 2011)Uso de git (Cursos de e-ghost 2011)
Uso de git (Cursos de e-ghost 2011)Iñaki Arenaza
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitDrPantera
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCarlos Huamaní
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con gitJuan Vladimir
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a gitKeopx
 

Similar a The Gift of Git [Español: La Palabra de Git] (20)

Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Git 101+
Git 101+Git 101+
Git 101+
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/push
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
 
Uso de git para el mantenimiento de parches locales o públicos
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicos
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
Uso de git (Cursos de e-ghost 2011)
Uso de git (Cursos de e-ghost 2011)Uso de git (Cursos de e-ghost 2011)
Uso de git (Cursos de e-ghost 2011)
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 

The Gift of Git [Español: La Palabra de Git]

  • 1. La palabra de git O cómo usar el control de versiones para trabajar feliz. DevCon Chile 2015
  • 2. Felipe Cabargas Frontend Developer | Startup Podium | Reciclar.io Ex piloto de X-Wing
  • 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
  • 7. Porqué git? Funciona casi completamente de forma local.
  • 8. Porqué git? Nunca borra información (bueno… casi nunca).
  • 9. Porqué git? Funciona de manera distribuida: Descentraliza siendo centralizado.
  • 13. Workflow básico: Inicio, Remotos y Clonado ~ $ mkdir source-code ~ $ cd source-code source-code $ git init Initialized empty Git repository in /Users/Felipe/ source-code/.git/ source-code $ git remote add origin git@example.com:felipecabargas/source-code.git source-code $ ~ $ git clone git@example.com:felipecabargas/ source-code.git Cloning into ‘source-code'... remote: Counting objects: 1, done. remote: Compressing objects: 100% (1/1), done. remote: Total 1 (delta 1), reused 0 (delta 0), pack-reused 1 Receiving objects: 100% (1/1), 3.14 MiB | 1.83 MiB/s, done. Resolving deltas: 100% (1/1), done. Checking connectivity... done. ~ $ cd source-code source-code $ init & remotes clone
  • 14. Workflow básico: Cambios y Sincronización source-code $ vi README.md source-code $ ✗ git add README.md source-code $ git commit -m “Add: README file” Created commit 8b3b8b3: Add: README file 1 files changed, 120 insertions(+), 0 deletions(-) source-code $ git push origin master source-code $ git push REMOTE BRANCH source-code $ git status On branch master nothing to commit, working directory clean source-code $ git pull remote: Counting objects: 1, done. remote: Compressing objects: 100% (1/1), done. remote: Total 1 (delta 1), reused 0 (delta 1) Receiving objects: 100% (1/1), 1.78 KiB | 43.00 KiB/ s, done. Resolving deltas: 100% (1/1), completed with 0 local objects. From git.example.com:code * branch master -> FETCH_HEAD 9018073..8b3b8b3 master -> origin/master Updating 9018073..8b3b8b3 add, commit & push status & pull
  • 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
  • 20. Modelo de “ramas” source-code $ git log —-oneline —-graph * 80be68a Update: schema * 31072d6 Fix: Refactor table to avoid reservated column name * 3f94aac Added pry * 235e78e Add: belongs_to account * 48d1c45 Add contribution guide * df7709e Add changelog * 6d3fb18 Add: act_as_nested_set rule to Account model * c1048c7 Update: schema * eff0920 Add: model Account * cd97c6c Update: schema * 5552c51 Add: account_id relationship for Users * 51b6fe3 Update: schema * a5a4611 Add: Devise User model * 28f2489 Add: Autogenerated Rails 4.2 app * c11e740 add README
  • 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
  • 23. Modelo de “ramas”: Mezclando ramas source-code (world-feature) $ git push origin new-branch Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (6/6), 590 bytes | 0 bytes/s, done. Total 6 (delta 0), reused 0 (delta 0) To git@gitlab.com:cabargas/git-ex.git source-code (world-feature) $ git checkout master source-code (world-feature) $ git merge —-no-ff world-feature merge
  • 24. Q&A