SlideShare una empresa de Scribd logo
Por qué odio GIT
Fernando Escolar
Development & Cloud Lead Consultant
fernando.escolar@tokiota.com
@fernandoescolar
TOKIOTA,
the Microsoft leading partner for innovative technology solutions,
empowering our customers while taking care of our people.
¿Recuerdas 2005?
Se funda el centro nacional
de supercomputación
En Barcelona
Apple
Lanza MacOS X 10.4 Tiger
y el iPod 5G
Lo peta en el mercado con
sus modelos N70 y N90
Nokia
Sony Computers
Lanza la
Play Station Portable
Anunciado el proyecto
“Longhorn”
Microsoft
Microsoft
.Net Framework 2.0
Visual Studio 2005
Visual Source Safe,
Subversion, CVS…
SCM’s
Y entonces…
Linus Torvalds
comienza a desarrollar “GIT”
Menos mal que le cambiaron
el logo
Cuentan las leyendas que lo
hizo en un
fin de semana…
Años más tarde…
Microsoft incorpora
GIT en todas sus
herramientas de
desarrollo…
Ignorantes y valientes…
Vamos a montar
GIT como nuevo
SCM corporativo.
Todos a migrar!!!
VIVA!!!!
VIVA!!!!
VIVA!!!!
</>Después de muchos meses
7 razones por
las que GIT me ha destrozado
la vida
Ya no puedo irme
pronto a casa
GIT es distribuido
clone
# este comando lo usamos para conectarnos con un repositorio de git
$ git clone my-remote http://my-git.com/repository
El código
ya no es mío
Multiples repositorios fuente
remote
# con esto añadimos otro repositorio servidor con alias "tokiota" a
nuestro repositorio local
$ git remote add tokiota https://tokiota.com/gits/repo.git
# así listamos todos los servidores que tenemos asociados
$ git remote -v
Me he quedado
sin café!!
Diferenciales en forma de snapshots
# comando para recoger los cambios del servidor
$ git pull my-remote
pull
Las branches son solo un estado
branches# así creamos una rama
$ git checkout -b my-branch
# así cambiamos a esa rama
$ git checkout my-branch
No me fio de las personas que
no beben café
Me obligan a
practicar TDD
commit local
# creamos un conjunto de cambios con el comentario entrecomillado
$ git commit -m "#Tarea - Red"
# otro commit para cuando pasan los tests
$ git commit -m "#Tarea - Green"
# creamos el último conjunto de cambios
$ git commit -m "#Tarea - Refactor"
# enviamos todos los commits locales al servidor
$ git push my-remote
commits
por todas partes
logs
# así sacamos los commits de la branch actual
$ git log
commit a8a7bfff366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com> Date: ...
commit e5e3e4c1ef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com> Date: ...
...
Gitar Hero
Perseguido
La culpa es siempre mía,
me siento
# Esto:
$ git pull my-remote
# Es aproximadamente esto:
$ git fetch my-remote
$ git merge my-branch
fetch & merge
Es complicado
Muchos comandos
y parámetros
Ejemplo
Echar para atrás un commit
# Desatachamos el HEAD, que es lo mismo que no tener ninguna rama
desprotegida:
$ git checkout dd1d7ab32
# si quieres hacer cambios mientras estás en este estado extraño:
$ git checkout -b old-state dd1d7ab32
temporalmente
# Primero no tendrás que tener nada modificado. Todo en commits.
# Después borramos el cambio:
$ git reset --hard dd1d7ab32
# Si quieres guardar el código modificado, porque no quieres hacer un
commit:
$ git stash git reset --hard dd1d7ab32 git stash pop
si no hemos publicado
# Esto crea 3 commits separados que desacen los commits indicados:
$ git revert a867a4ad 25eff4ca a766c053
# También lo podemos hacer por rango. Borrando los dos últimos
commits:
$ git revert HEAD~2..HEAD
# O podemos tirar para atrás un commit de tipo MERGE:
$ git revert -m 1 <merge_commit_sha>
si ya está publicado
Comando base Resultado inutil Comando útil Resultado esperado
git branch foo Creates a branch but does nothing with it git checkout -b foo Creates branch and switches to it
git remote Shows names of remotes git remote -v Shows names and URLs of remotes
git stash Stores modifications to tracked files, then
rolls them back
git stash -u Also does the same to untracked files
git branch Lists names of local branches git branch -rv Lists local and remote tracking branches;
shows latest commit message
git rebase Destroy history blindfolded git rebase -i Lets you rewrite the upstream history of a
branch, choosing which commits to keep,
squash, or ditch.
git reset foo Unstages files git reset –hard
git reset –soft
Discards local modifications
Returns to another commit, but doesn’t
touch working directory.
git add Nothing – prints warning git add .
git add -A
Stages all local modifications/additions
Stages all local
modifications/additions/deletions
Hall of shame
No voy a usar herramientas de 3os
Atlasian SourceTree gitkraken
Visual Studio
En resumen
Linus Torvalds
no es tu amigo
No importa
no estar alineado
con todo el mundo
No le digas a todo
el mundo que GIT mola
publicidad gratuita
Deja de darle
No uses
GIT
Preguntas
</ironic>
¡Muchas gracias!
http://es.slideshare.net/fernandoescolar/gapand-por-qu-odio-git
http://fernandoescolar.github.io/2016/02/16/por-que-odio-git/
@fernandoescolar
fernando.escolar@tokiota.com

Más contenido relacionado

Destacado

Manual deconstruccion
Manual deconstruccionManual deconstruccion
Manual deconstruccion
Athabasca University
 
La sociedad se comunica
La sociedad se comunicaLa sociedad se comunica
La sociedad se comunica
carmenzarodriguez72
 
Ascentn AgilePoint 2009
Ascentn AgilePoint 2009Ascentn AgilePoint 2009
Ascentn AgilePoint 2009hanshantson
 
April Goss Portfolio
April Goss PortfolioApril Goss Portfolio
April Goss Portfolio
April Goss
 
La globalizacion
La globalizacionLa globalizacion
La globalizacion
Gabriel Amesquita
 
Hacking case report al hamra trading company
Hacking case report al hamra trading companyHacking case report al hamra trading company
Hacking case report al hamra trading company
Syed Kashif Ali
 
Arthroderma telomorfo de dermatofitos
Arthroderma telomorfo de dermatofitosArthroderma telomorfo de dermatofitos
Arthroderma telomorfo de dermatofitosAdriana Sandón
 
Ejercicios del modelo entidad relacion
Ejercicios del modelo entidad relacionEjercicios del modelo entidad relacion
Ejercicios del modelo entidad relacion
Carlos CaychoChumpitaz
 
6 i labora - curso de google adwords - manual de ventas de google adwords
6   i labora - curso de google adwords - manual de ventas de google adwords6   i labora - curso de google adwords - manual de ventas de google adwords
6 i labora - curso de google adwords - manual de ventas de google adwords
Emagister
 
Investigacion de Mercado
Investigacion de MercadoInvestigacion de Mercado
Investigacion de Mercado
Rocio Romani
 
Ciencias naturalez ii
Ciencias naturalez iiCiencias naturalez ii
Ciencias naturalez iiazziral
 
M02 rugm 6563_05_ppw_ch02
M02 rugm 6563_05_ppw_ch02M02 rugm 6563_05_ppw_ch02
M02 rugm 6563_05_ppw_ch02
Misbah Durrani
 

Destacado (15)

Manual deconstruccion
Manual deconstruccionManual deconstruccion
Manual deconstruccion
 
La sociedad se comunica
La sociedad se comunicaLa sociedad se comunica
La sociedad se comunica
 
Ascentn AgilePoint 2009
Ascentn AgilePoint 2009Ascentn AgilePoint 2009
Ascentn AgilePoint 2009
 
April Goss Portfolio
April Goss PortfolioApril Goss Portfolio
April Goss Portfolio
 
Mivc rvgdfv
Mivc rvgdfvMivc rvgdfv
Mivc rvgdfv
 
La globalizacion
La globalizacionLa globalizacion
La globalizacion
 
Hacking case report al hamra trading company
Hacking case report al hamra trading companyHacking case report al hamra trading company
Hacking case report al hamra trading company
 
Hipoacusia y sordoceguera
Hipoacusia y sordocegueraHipoacusia y sordoceguera
Hipoacusia y sordoceguera
 
Arthroderma telomorfo de dermatofitos
Arthroderma telomorfo de dermatofitosArthroderma telomorfo de dermatofitos
Arthroderma telomorfo de dermatofitos
 
Ejercicios del modelo entidad relacion
Ejercicios del modelo entidad relacionEjercicios del modelo entidad relacion
Ejercicios del modelo entidad relacion
 
6 i labora - curso de google adwords - manual de ventas de google adwords
6   i labora - curso de google adwords - manual de ventas de google adwords6   i labora - curso de google adwords - manual de ventas de google adwords
6 i labora - curso de google adwords - manual de ventas de google adwords
 
Investigacion de Mercado
Investigacion de MercadoInvestigacion de Mercado
Investigacion de Mercado
 
Ciencias naturalez ii
Ciencias naturalez iiCiencias naturalez ii
Ciencias naturalez ii
 
Plc 1
Plc 1Plc 1
Plc 1
 
M02 rugm 6563_05_ppw_ch02
M02 rugm 6563_05_ppw_ch02M02 rugm 6563_05_ppw_ch02
M02 rugm 6563_05_ppw_ch02
 

Similar a Gapand - por qué odio git?

Flujo de trabajo básico con git
Flujo de trabajo básico con gitFlujo de trabajo básico con git
Flujo de trabajo básico con git
Jan Sanchez
 
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
Alexis Lopez
 
Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
quaip
 
Intro a GIT
Intro a GITIntro a GIT
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
ch1l3no
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
maxfontana90
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
quaip
 
Git 101+
Git 101+Git 101+
Git 101+
sys army
 
Git
GitGit
Git y github básico
Git y github básicoGit y github básico
Git y github básico
Nelson Manuel Ordaz Yglesias
 
Scott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árbolesScott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árbolesStarTech Conference
 
Git workflow v2
Git workflow  v2Git workflow  v2
Git workflow v2
René Olivo
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4fyomaira
 
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
Iñaki Arenaza
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
Max Rodriguez
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
Keopx
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
Joel Márquez
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
Henry Jiménez Sánchez
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
Javier Novoa Cataño
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
sidelab
 

Similar a Gapand - por qué odio git? (20)

Flujo de trabajo básico con git
Flujo de trabajo básico con gitFlujo de trabajo básico con git
Flujo de trabajo básico con git
 
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 - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
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 + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
 
Git 101+
Git 101+Git 101+
Git 101+
 
Git
GitGit
Git
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Scott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árbolesScott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árboles
 
Git workflow v2
Git workflow  v2Git workflow  v2
Git workflow v2
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4
 
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
 
Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 

Más de Fernando Escolar Martínez-Berganza

Por qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta malPor qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta mal
Fernando Escolar Martínez-Berganza
 
Deconstrucción de SOLID
Deconstrucción de SOLIDDeconstrucción de SOLID
Deconstrucción de SOLID
Fernando Escolar Martínez-Berganza
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
Fernando Escolar Martínez-Berganza
 
Devops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscaleDevops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscale
Fernando Escolar Martínez-Berganza
 
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Fernando Escolar Martínez-Berganza
 
Reconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTSReconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTS
Fernando Escolar Martínez-Berganza
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
Fernando Escolar Martínez-Berganza
 
Unit testing en Windows 10
Unit testing en Windows 10Unit testing en Windows 10
Unit testing en Windows 10
Fernando Escolar Martínez-Berganza
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
DotNet Conference: code smells
DotNet Conference: code smellsDotNet Conference: code smells
DotNet Conference: code smells
Fernando Escolar Martínez-Berganza
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
Fernando Escolar Martínez-Berganza
 
Codemotion: descubriendo las cachés
Codemotion: descubriendo las cachésCodemotion: descubriendo las cachés
Codemotion: descubriendo las cachés
Fernando Escolar Martínez-Berganza
 
Unit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugsUnit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugs
Fernando Escolar Martínez-Berganza
 
We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)
Fernando Escolar Martínez-Berganza
 
Mobile services by @quiqu3
Mobile services by @quiqu3Mobile services by @quiqu3
Mobile services by @quiqu3
Fernando Escolar Martínez-Berganza
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
Fernando Escolar Martínez-Berganza
 
Where is my beer?
Where is my beer?Where is my beer?
Coding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival GuideCoding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival Guide
Fernando Escolar Martínez-Berganza
 
Level up your skills
Level up your skillsLevel up your skills

Más de Fernando Escolar Martínez-Berganza (20)

Por qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta malPor qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta mal
 
Deconstrucción de SOLID
Deconstrucción de SOLIDDeconstrucción de SOLID
Deconstrucción de SOLID
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
 
Devops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscaleDevops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscale
 
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
 
Reconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTSReconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTS
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
 
Unit testing en Windows 10
Unit testing en Windows 10Unit testing en Windows 10
Unit testing en Windows 10
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
Las cronicas de redis
 
Redis: no solo una caché
Redis: no solo una cachéRedis: no solo una caché
Redis: no solo una caché
 
DotNet Conference: code smells
DotNet Conference: code smellsDotNet Conference: code smells
DotNet Conference: code smells
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
 
Codemotion: descubriendo las cachés
Codemotion: descubriendo las cachésCodemotion: descubriendo las cachés
Codemotion: descubriendo las cachés
 
Unit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugsUnit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugs
 
We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)
 
Mobile services by @quiqu3
Mobile services by @quiqu3Mobile services by @quiqu3
Mobile services by @quiqu3
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
 
Where is my beer?
Where is my beer?Where is my beer?
Where is my beer?
 
Coding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival GuideCoding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival Guide
 
Level up your skills
Level up your skillsLevel up your skills
Level up your skills
 

Último

Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
arriagaanggie50
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
SERVANDOBADILLOPOLEN
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 

Último (20)

Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 

Gapand - por qué odio git?

Notas del editor

  1. Posiblemente porque se aburría.
  2. Según comenta el propio señor Torvalds, lo diseñó pensando en sus necesidades. Esas que no le aportaban otros SCM. Su idea era que fuera distribuido, fácil, rápido y poco pesado... Y la lunaaaa!!!
  3. Cuentan las leyendas que lo hizo en un fin de semana y ahora ya no trabaja en ello. 
  4. Quizá esto le debería hacer perder credibilidad a la herramienta. Pero por lo visto causa el efecto contrario.
  5. Pero no lo sabíamos entonces…
  6. Antiguamente usábamos un sistema centralizado en el un servidor. Cuando no funcionaba internet, no podías trabajar. Visual Studio te daba problemas. Lo único que podías hacer era trabajar offline. Y las vueltas a online solían ser bastante dolorosas. La única solución razonable era irte a casa o tomar unas cervezas.
  7. Pero Git es distribuido. Esto se traduce a que cuando te “clonas” un repositorio en tu ordenador, automáticamente estás creando un repositorio como el del servidor. Pero de forma local. Así trabajas en tu máquina hasta que decides sincronizar con el servidor todas las modificaciones que has realizado. Las consecuencias de esto son nefastas: ya no te puedes ir a casa. Aunque no tengas conexión, puedes seguir trabajando. Ya sincronizarás más tarde.
  8. En este punto, supongo que más de uno se estará preguntando: ¿Qué es eso de que los cambios los guardas en local? ¿Cómo que subes cuando quieres? ¿Un desarrollador puede tener un cambio y no subirlo hasta final de mes? ¿No tiene por qué guardar directamente los cambios en el servidor?. Es evidente que quien desarrolló Git no tiene claro el concepto de Continuous Integration…
  9. Dentro de estas funcionalidades absurdas, encontramos que un repo Git puede tener varios “remote”. Un “remote” es un servidor con el que sincronizar el repositorio local. Y un mismo repositorio que tienes en local puede estar vinculado con varios servidores diferentes.
  10. Ahora me imagino a un proveedor diciendo que guardan en sus servidores el código que están escribiendo para nosotros. Y que nos digan que ya sincronizarán con nuestros servidores de vez en cuando… De eso nada. Les estamos pagando. Por lo que ese código es nuestro. No queremos que lo tengan en sus servidores.
  11. Mi rutina diaria siempre ha sido muy normal. Me gusta llegar a trabajar por la mañana, encender el ordenador y le darle a descargar la última versión del código. Mientras, me acerco a la cafetera y me tomo un ristretto. Para cuando vuelvo a mi puesto, terminan de descargarse los últimos datos.
  12. Git me ha robado el momento zen del café matutino. Internamente maneja un tamaño de paquetes diferenciales (snapshots) que imagino que serán bastante pequeños. Espero que no pierda cambios por ello. El resultado es que las descargas no dan tiempo a ese café. Y me dejan sin excusa para tomarlo.
  13. Otro café que ya no me puedo tomar es el de cuando te descargas una branch. Mientras se descargaba podías tener una conversación interesante con los compañeros. Eso también lo hemos perdido. Git maneja un sistema de branches totalmente diferente. Para este sistema una rama es solo un punto en el camino. Marca una posición en la que se aplican solo una serie de cambios. No todos. Así que cuando sincronizas el código ya te descargas todas las ramas.
  14. Parece que a los programadores de Git no les gusta el café. No me fío de las personas a las que no les gusta el café.
  15. Hace tiempo que dentro del Definition Of Done figura tener pruebas unitarias para todo el código que subamos. Unas cómodas pruebas. Una vez has terminado la funcionalidad, copias el código y cambias un par de detalles. Así consigues una prueba válida rápidamente. Sin esfuerzo. Y eso sin contar con el apoyo de grandes herramientas como Pex.
  16. Pues resulta que ahora como tenemos Git, no hace falta que un “commit” vaya directo al servidor. Ese cambio puede residir en nuestro repositorio local. Ahora resulta que tenemos sincronizar el código con al menos tres cambios bien diferenciados: “red”, “green” y “refactor”. Todos los desarrolladores tenemos que pensar primero en una prueba, escribirla y que no pase. Luego hacer el código necesario para que pase ese test. Para finalizar poner todo el código anterior bonito y que las pruebas sigan pasando. Lo que se conoce vulgarmente como Test Driven Development. Que te obliga a pensar más. Y en cualquier momento alguien puede revisar si lo has estado aplicando correctamente. Una verdadera caza de brujas.
  17. Los commit se pueden aplicar sueltos. Hay bifurcaciones. Puedes montar un puzzle de cambios sin problemas. Una branch puede tener unos commits totalmente diferentes a los de otra. Además la forma de identificarlos son GUID’s. Que no sé si alguno os dice algo un GUID, pero a mi no me aporta ningún valor.
  18. Un ejemplo gráfico, gracias a una herramienta que nos muestra un mapa de cambios. Otro ejemplo es uno de twitter: El GIT-ar Hero. Si alguien entiende algo de esto, que venga y me lo explique por favor.
  19. La parte buena de tener semejante conjunto de cambios son los merges grandes. Creo que todos hemos vivido ese momento en el que se junta la rama de hotfix con la principal. La persona encargada suele perder algún código importante en la operación. Es la forma ideal de ocultar otros problemas y ganar tiempo en los desarrollos. Además, nadie te va a echar nada en cara porque la culpa ha sido de quien hizo el merge.
  20. En Git esta operación de merge se realiza en el momento que descargas el código del servidor. Lo hace cada uno en local. De esta forma, los administradores de VSTS tiran balones fuera. Que los merge los haga cada desarrollador. Que nos comamos nosotros el marrón. Y lo que es peor, al haber muchos commits, es muy fácil encontrar quien ha metido la pata en el código. Sigue la caza de brujas…
  21. No sé si os habéis percatado de que voy poniendo code-snippets a lo largo de todo este escrito. Está hecho a posta. Si hay una forma de manejar bien Git y sacarle todo el jugo es usar comandos de consola. Como si estuvieramos en el medievo. Alguno me dirá que Visual Studio tiene soporte para Git. Pero realmente no tiene todos los comandos implementados. Sí la mayoría. Pero no todos. Para hacer ciertas operaciones al final tienes que abrir la consola. También hay gente que usa Source Tree. Una aplicación de Atlassian. Me niego en rotundo a instalarme más aplicaciones… Aunque la recomiende Martin Fowler.
  22. Dentro del mundo de todos los comandos que tiene Git, encontramos que podemos resolver un mismo problema de muchas formas diferentes. Un ejemplo sería echar para atrás un commit. Tendríamos las siguientes alternativas: