SlideShare une entreprise Scribd logo
1  sur  27
Flujo de trabajo básico con GIT
 Gites un software de control de
 versiones creado por Linus Torvalds,
 pensado en la eficiencia y la
 confiabilidad del desarrollo y
 mantenimiento de versiones de
 aplicaciones cuando estas tienen un
 gran número de archivos de código
 fuente.
 Existe
       para poder realizar un
 desarrollo no-lineal.

 Incluye
        herramientas específicas
 para navegar y visualizar un historial
 de desarrollo no-lineal.

 Loscambios son fusionados
 frecuentemente.
 Su   licencia es GNU GPL.

 Gestión   distribuida.

 Cada  desarrollador tiene una copia
 local del historial del desarrollo
 entero, y los cambios se propagan
 entre los repositorios locales.
 Los cambios se importan como
 ramas adicionales y pueden ser
 fusionados de la misma forma que se
 hace con la rama local.

 Gestión eficiente de proyectos
 grandes, dada la rapidez de gestión
 de diferencias entre archivos.
Cuando hay muchas y existe mucha
  documentación en la red?

 Fácil,
       se hizo para proponer un flujo
 de trabajo básico, para usar GIT,
 pero bien! y aprovechar el gran poder
 que tiene para poder realizar un
 desarrollo en paralelo.
 Estaparte no la expondremos aquí
 ya que existe mucha documentación
 en la red sobre eso como por
 ejemplo:

 http://goo.gl/E0gng
 http://goo.gl/GRT3Q
 http://goo.gl/pr0GD
 Porlo general nosotros
 desarrollamos sobre la rama master,
 es allí donde realizamos nuestros
 cambios y los vemos reflejados en el
 dominio de desarrollo, por ejemplo:

 http://dev.mipagina.pe
 A lomucho realizamos nuestros
 cambios en un entorno local(nuestra
 pc), por ejemplo:

  http://local.mipagina.pe

 Y solo hacemos push a la rama
 master para subir los cambios que
 realizamos en nuestro entorno local.
 Loque a su vez nos trae problemas
 porque yo subí mis cambios pero
 pepito también subió los suyos y
 para colmo de males el también
 modificó layout.phtml, grrr…

 Muyprobablemente alguno de los 2
 perderá todo su avance.

 En
   el mejor de los casos Git nos
 mostrará un HEAD.
 Me tomó horas resolver la tarea
 asignada, lo trabajé en local todo el
 día, trabajo así porque pierdo tiempo
 haciendo push a la rama master
 cada vez que quiero ver un cambio
 en el dominio de desarrollo.

 Si trabajamos de esta forma…
 continuamente perderemos tiempo y
 muchas cosas más…
 Por lo cual proponemos un flujo
 eficiente para sacarle provecho a Git.

 Para este flujo de trabajo básico
 necesitaremos crear además de la
 rama master, una rama llamada
 development y ramas
 momentáneas(todas estas ramas
 adicionales serán locales).
 Estandoactualmente en la rama master
 procedemos a crear la rama
 development:

 (master)> git checkout –b development

 Conesta línea de código creamos la
 rama local development y accedemos
 automáticamente a ella.
 Sénombrará las ramas momentáneas
 según el tipo del ticket(este puede ser
 una tarea, mejora o un error).

 Porejemplo el nombre de una rama
 momentánea creada para resolver la
 tarea del ticket #4000 será:

 task#4000
 Encambio el nombre de una rama
 momentánea creada para resolver el
 error del ticket #4001 será:

 bug#4001

 Esta convención nos ayudará a
 distinguir cada rama momentánea
 por su origen(tarea, mejora o error).
 Estandoactualmente en la rama local
 development procedemos a crear la
 rama local task#4000

 (development)> git checkout –b task#4000

 Conesta línea de código creamos la
 rama local task#4000 y accedemos
 automáticamente a ella.
 Ahora   ya estamos en la rama local task#4000

 (task#4000)>

 En esta rama tenemos una instancia
 de la rama master, y podemos
 modificar el código que deseemos y
 olvidarnos de esperar que pepito
 acabe de editar el mismo archivo con
 el que nosotros deseamos trabajar.
 Máso menos así quedaría la estructura de
 nuestro repositorio Git local.


        Master

                   Development


                                 task#4000


                                 bug#4001
 Sobre esta rama trabajaremos nuestra tarea
 actual, una vez terminada y testeada en
 nuestro entorno local(nuestra pc)
 procederemos a fusionar(hacer merge con la
 rama development), para lo cual
 commitearemos nuestros cambios una sola
 vez a la rama task#4000, el código es el
 siguiente:

 (task#4000)> git add .; git commit -am “done”
 Luego ingresaremos a la rama development,
 el código es el siguiente:

 (task#4000)> git checkout development

 Pararealizar el merge de nuestra tarea
 completada sobre development
 escribimos lo siguiente:

 (development)> git merge task#4000
 Habiendo  hecho esto hemos fusionado la
 rama task#4000 con la rama development, lo
 que quiere decir que hemos traído todos los
 archivos modificados desde la rama
 task#4000 y los hemos reemplazado por sus
 similares en la rama development, con esto
 ya tenemos todos nuestros cambios en la
 rama development.

 Luego ingresaremos a la rama local master y
 traeremos los últimos cambios que se hayan
 realizado sobre la rama remota master.
 Nos   posicionamos en la rama local master:

    (development)> git checkout master

   Para traer los últimos cambios de la rama remota
    master hacia la rama local master escribimos el
    siguiente código:

    (master)> git pull origin master

   Con esto habremos actualizado nuestra rama
    local master y ahora procederemos a realizar el
    merge desde la rama development hacia la rama
    local master.
   Hacemos el merge estando en la rama local
    master(actualizada), traemos los cambios desde la
    rama local development con el siguiente código.

    (master)> git merge development

   Lo normal sería que este proceso no nos de un
    HEAD, pero si se diera ese caso entonces tendríamos
    que resolver los conflictos manualmente.

    Nota: si deseamos ver información gráfica sobre las
    actividades del repositorio podemos usar gitk:

    (master)> gitk
   El uso de gitk no se explicará en esta
    presentación pero si estas interesado en aprender
    sobre gitk puedes pasar por este enlace
    http://goo.gl/jBSEf y luego continuar con la
    presentación.

   Si resolviste el HEAD(problema que se dio porque
    alguno o muchos de los archivos que modificaste
    también fue modificado por algún desarrollador
    más) o mejor aún si no tuviste ningún HEAD,
    entonces podemos continuar…
   Si llegaste a esta parte de la presentación
    entonces solo nos queda hacer el push hacia la
    rama master remota.

    (master)> git push origin master

   Con esto tus cambios finalmente suben hacia la
    rama remota master y puedes visualizarlos en tu
    dominio de desarrollo.

   Si tuviste un HEAD entonces tienes un motivo
    más para seguir en esta presentación… y si no
    también porque aún nos falta eliminar la rama
    task#4000
   Debido al HEAD debemos actualizar la rama
    development para que se mantenga exactamente
    igual a la rama local master.

    (master)> git checkout development

    (development)> git merge master

   Con la primera línea ingresamos a la rama
    development y con la segunda hacemos el merge
    trayendo todos los cambios desde la rama local
    master hacia la rama local development, con esto
    trajimos las ultimas correcciones manuales que
    realizaste luego del HEAD.
   Una vez realizado esto, culminamos el proceso
    eliminando la rama local task#4000, escribiendo
    el siguiente código:

    (development)> git branch –d task#4000

   Con esto habremos culminado este proceso
    básico correctamente.


    Gracias por su atención.

                                       @jansanchez

Contenu connexe

Tendances

A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
abodeltae
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
민태 김
 

Tendances (20)

Learning Git and GitHub - BIT GDSC.pdf
Learning Git and GitHub - BIT GDSC.pdfLearning Git and GitHub - BIT GDSC.pdf
Learning Git and GitHub - BIT GDSC.pdf
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
 
Comparison of SVN and Git
Comparison of SVN and GitComparison of SVN and Git
Comparison of SVN and Git
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Git collaboration
Git collaborationGit collaboration
Git collaboration
 
Git Terminologies
Git TerminologiesGit Terminologies
Git Terminologies
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 
Gerrit Code Review multi-site
Gerrit Code Review multi-siteGerrit Code Review multi-site
Gerrit Code Review multi-site
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
Git 入門ちょい手前
Git 入門ちょい手前Git 入門ちょい手前
Git 入門ちょい手前
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 
Git workflows presentation
Git workflows presentationGit workflows presentation
Git workflows presentation
 
GitLab.pptx
GitLab.pptxGitLab.pptx
GitLab.pptx
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
Git basics
Git basicsGit basics
Git basics
 

Similaire à Flujo de trabajo básico con git

Similaire à Flujo de trabajo básico con git (20)

Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
 
Intro a GIT
Intro a GITIntro a GIT
Intro a GIT
 
Mercurial
MercurialMercurial
Mercurial
 
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
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Git.manual.usuario
Git.manual.usuarioGit.manual.usuario
Git.manual.usuario
 
Introducción a GitFlow
Introducción a GitFlowIntroducción a GitFlow
Introducción a GitFlow
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
gitflow
gitflowgitflow
gitflow
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
Flujos de trabajo y mejores prácticas en git
Flujos de trabajo y mejores prácticas en gitFlujos de trabajo y mejores prácticas en git
Flujos de trabajo y mejores prácticas en git
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Gapand - por qué odio git?
Gapand - por qué odio git?Gapand - por qué odio git?
Gapand - por qué odio git?
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versiones
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
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 y github básico
Git y github básicoGit y github básico
Git y github básico
 
Git + Github - Sysmana 2014
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Flujo de trabajo básico con git

  • 1. Flujo de trabajo básico con GIT
  • 2.  Gites un software de control de versiones creado por Linus Torvalds, pensado en la eficiencia y la confiabilidad del desarrollo y mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente.
  • 3.  Existe para poder realizar un desarrollo no-lineal.  Incluye herramientas específicas para navegar y visualizar un historial de desarrollo no-lineal.  Loscambios son fusionados frecuentemente.
  • 4.  Su licencia es GNU GPL.  Gestión distribuida.  Cada desarrollador tiene una copia local del historial del desarrollo entero, y los cambios se propagan entre los repositorios locales.
  • 5.  Los cambios se importan como ramas adicionales y pueden ser fusionados de la misma forma que se hace con la rama local.  Gestión eficiente de proyectos grandes, dada la rapidez de gestión de diferencias entre archivos.
  • 6. Cuando hay muchas y existe mucha documentación en la red?  Fácil, se hizo para proponer un flujo de trabajo básico, para usar GIT, pero bien! y aprovechar el gran poder que tiene para poder realizar un desarrollo en paralelo.
  • 7.  Estaparte no la expondremos aquí ya que existe mucha documentación en la red sobre eso como por ejemplo:  http://goo.gl/E0gng  http://goo.gl/GRT3Q  http://goo.gl/pr0GD
  • 8.  Porlo general nosotros desarrollamos sobre la rama master, es allí donde realizamos nuestros cambios y los vemos reflejados en el dominio de desarrollo, por ejemplo:  http://dev.mipagina.pe
  • 9.  A lomucho realizamos nuestros cambios en un entorno local(nuestra pc), por ejemplo: http://local.mipagina.pe Y solo hacemos push a la rama master para subir los cambios que realizamos en nuestro entorno local.
  • 10.  Loque a su vez nos trae problemas porque yo subí mis cambios pero pepito también subió los suyos y para colmo de males el también modificó layout.phtml, grrr…  Muyprobablemente alguno de los 2 perderá todo su avance.  En el mejor de los casos Git nos mostrará un HEAD.
  • 11.  Me tomó horas resolver la tarea asignada, lo trabajé en local todo el día, trabajo así porque pierdo tiempo haciendo push a la rama master cada vez que quiero ver un cambio en el dominio de desarrollo. Si trabajamos de esta forma… continuamente perderemos tiempo y muchas cosas más…
  • 12.  Por lo cual proponemos un flujo eficiente para sacarle provecho a Git.  Para este flujo de trabajo básico necesitaremos crear además de la rama master, una rama llamada development y ramas momentáneas(todas estas ramas adicionales serán locales).
  • 13.  Estandoactualmente en la rama master procedemos a crear la rama development: (master)> git checkout –b development  Conesta línea de código creamos la rama local development y accedemos automáticamente a ella.
  • 14.  Sénombrará las ramas momentáneas según el tipo del ticket(este puede ser una tarea, mejora o un error).  Porejemplo el nombre de una rama momentánea creada para resolver la tarea del ticket #4000 será: task#4000
  • 15.  Encambio el nombre de una rama momentánea creada para resolver el error del ticket #4001 será: bug#4001  Esta convención nos ayudará a distinguir cada rama momentánea por su origen(tarea, mejora o error).
  • 16.  Estandoactualmente en la rama local development procedemos a crear la rama local task#4000 (development)> git checkout –b task#4000  Conesta línea de código creamos la rama local task#4000 y accedemos automáticamente a ella.
  • 17.  Ahora ya estamos en la rama local task#4000 (task#4000)>  En esta rama tenemos una instancia de la rama master, y podemos modificar el código que deseemos y olvidarnos de esperar que pepito acabe de editar el mismo archivo con el que nosotros deseamos trabajar.
  • 18.  Máso menos así quedaría la estructura de nuestro repositorio Git local. Master Development task#4000 bug#4001
  • 19.  Sobre esta rama trabajaremos nuestra tarea actual, una vez terminada y testeada en nuestro entorno local(nuestra pc) procederemos a fusionar(hacer merge con la rama development), para lo cual commitearemos nuestros cambios una sola vez a la rama task#4000, el código es el siguiente: (task#4000)> git add .; git commit -am “done”
  • 20.  Luego ingresaremos a la rama development, el código es el siguiente: (task#4000)> git checkout development  Pararealizar el merge de nuestra tarea completada sobre development escribimos lo siguiente: (development)> git merge task#4000
  • 21.  Habiendo hecho esto hemos fusionado la rama task#4000 con la rama development, lo que quiere decir que hemos traído todos los archivos modificados desde la rama task#4000 y los hemos reemplazado por sus similares en la rama development, con esto ya tenemos todos nuestros cambios en la rama development.  Luego ingresaremos a la rama local master y traeremos los últimos cambios que se hayan realizado sobre la rama remota master.
  • 22.  Nos posicionamos en la rama local master: (development)> git checkout master  Para traer los últimos cambios de la rama remota master hacia la rama local master escribimos el siguiente código: (master)> git pull origin master  Con esto habremos actualizado nuestra rama local master y ahora procederemos a realizar el merge desde la rama development hacia la rama local master.
  • 23. Hacemos el merge estando en la rama local master(actualizada), traemos los cambios desde la rama local development con el siguiente código. (master)> git merge development  Lo normal sería que este proceso no nos de un HEAD, pero si se diera ese caso entonces tendríamos que resolver los conflictos manualmente. Nota: si deseamos ver información gráfica sobre las actividades del repositorio podemos usar gitk: (master)> gitk
  • 24. El uso de gitk no se explicará en esta presentación pero si estas interesado en aprender sobre gitk puedes pasar por este enlace http://goo.gl/jBSEf y luego continuar con la presentación.  Si resolviste el HEAD(problema que se dio porque alguno o muchos de los archivos que modificaste también fue modificado por algún desarrollador más) o mejor aún si no tuviste ningún HEAD, entonces podemos continuar…
  • 25. Si llegaste a esta parte de la presentación entonces solo nos queda hacer el push hacia la rama master remota. (master)> git push origin master  Con esto tus cambios finalmente suben hacia la rama remota master y puedes visualizarlos en tu dominio de desarrollo.  Si tuviste un HEAD entonces tienes un motivo más para seguir en esta presentación… y si no también porque aún nos falta eliminar la rama task#4000
  • 26. Debido al HEAD debemos actualizar la rama development para que se mantenga exactamente igual a la rama local master. (master)> git checkout development (development)> git merge master  Con la primera línea ingresamos a la rama development y con la segunda hacemos el merge trayendo todos los cambios desde la rama local master hacia la rama local development, con esto trajimos las ultimas correcciones manuales que realizaste luego del HEAD.
  • 27. Una vez realizado esto, culminamos el proceso eliminando la rama local task#4000, escribiendo el siguiente código: (development)> git branch –d task#4000  Con esto habremos culminado este proceso básico correctamente. Gracias por su atención. @jansanchez