SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Resolviendo conflictos
                              con git
                                            Alfonso Alba García
                                               @aprendegit




                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Conflictos


                       • git es muy bueno incorporando el código
                           de una rama en otra
                       • Aún así, milagros no hace

                                         Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                 Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
¿Cuándo ocurren los
                               conflictos?

                       • Cuando intentamos incorporar las
                           modificaciones de un commit en otro
                       • ¿Y cuándo ocurre eso?

                                         Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                 Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
¿Cuándo ocurren los
                               conflictos?

                       • merge
                       • rebase
                       • cherry y cherry-pick

                                        Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Cuando ocurre un conflicto, el
                  repositorio queda “bloqueado”
                     hasta que lo resolvemos



                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Estado del repositorio

                       • No podemos hacer push, pull, merge ni
                           rebase (entre otras cosas)
                       • Sí podemos ejecutar aquellos comandos
                           que nos permiten resolver el conflicto



                                         Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                 Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Estado del repositorio
$ git status
# On branch menganito
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#! both modified:      cancion_del_pirata.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
$_




                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Estado del repositorio




                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Solución 0:
                            La patata caliente


                       • “Esto no es cosa mía, que lo haga otro”


                                        Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Solución 0:
                           La patata caliente


                                git reset HEAD --hard




                                      Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com              Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Demo


                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                                  conflicto

                       • el fichero cancion_del_pirata.txt contiene
                           la información que necesitamos para
                           resolver el conflicto




                                         Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                 Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Canción de manuel


<<<<<<< HEAD
Un soneto me manda hacer Violante,
en mi vida me he visto en tal aprieto;
catorce versos dicen que es soneto:
burla burlando van los tres delante.  c                                                      Nuestros cambios
Yo pensé que no hallara consonante
y estoy a la mitad de otro cuarteto;
mas si me veo en el primer terceto
no hay cosa en los cuartetos que me espante.
=======
  Con diez cervezas por barba,
grifo en mano, a toda vela,
no corta el bar, sino vuela
un borracho figurín.                                                                               Los de nuestro
Manuel barrigas que llaman,
por su estómago, el Temido,
                                             5
                                                                                                   compañero de
en todo bar conocido
del uno al otro confín.
                                                                                                       equipo
>>>>>>> fulanito



                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                              conflicto

                             ¿Y cuál era el texto original?




                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                              conflicto

$ git reset --hard HEAD
$ git config merge.conflictstyle diff3
$ git merge <branch>
Auto-merging cancion_del_pirata.txt
CONFLICT (content): Merge conflict in cancion_del_pirata.txt
Automatic merge failed; fix conflicts and then commit the result.




                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Canción de manuel


<<<<<<< HEAD
Un soneto me manda hacer Violante,
en mi vida me he visto en tal aprieto;
catorce versos dicen que es soneto:
burla burlando van los tres delante.

Yo pensé que no hallara consonante
y estoy a la mitad de otro cuarteto;
mas si me veo en el primer terceto
no hay cosa en los cuartetos que me espante.
||||||| merged common ancestors
  Con diez cañones por banda,
viento en popa, a toda vela,
no corta el mar, sino vuela
un velero bergantín.
Bajel pirata que llaman,                 5
por su bravura, el Temido,
en todo mar conocido
del uno al otro confín.
=======
  Con diez cervezas por barba,
grifo en mano, a toda vela,
no corta el bar, sino vuela
un borracho figurín.
Manuel barrigas que llaman,                  5
por su estómago, el Temido,
en todo bar conocido
del uno al otro confín.
>>>>>>> fulanito




                                       Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com               Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Demo


                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                                    conflicto
                       • Podemos usar herramientas externas para
                           visualizar los conflictos
                       • Para eso usamos git mergetool
                       • En el caso que nos ocupa, instalaremos
                           meld


                                         Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                 Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                                conflicto
                       • Instalación en OS-X
                                    $ brew install meld


                  • Instalación en Linux
                              $ aptitude install meld



                                       Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com               Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                              conflicto
                            $ git mergetool -t meld




                                     Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com             Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                                   conflicto
                       • Una vez editado el fichero, resolvemos el
                            conflicto ejecutando

                           $ git add cancion_del_pirata.txt
                           $ git commit




                                          Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                  Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Resolviendo el
                                          conflicto
                           Merge branch 'fulanito' into menganito

                           Conflicts:
                                   cancion_del_pirata.txt
                           #
                           # It looks like you may be committing a merge.
                           # If this is not correct, please remove the file
                           #       .git/MERGE_HEAD
                           # and try again.


                           #   Please enter the commit message for your changes. Lines starting
                           #   with '#' will be ignored, and an empty message aborts the commit.
                           #   On branch menganito
                           #   All conflicts fixed but you are still merging.
                           #     (use "git commit" to conclude merge)
                           #
                           #   Changes to be committed:
                           #
                           #         modified:         cancion_del_pirata.txt
                           #


                                                 Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                         Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Otras formas de
                           resolver el conflicto


                                       Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com               Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
--theirs
           git merge -s recursive -X theirs <branch>


                  • Esto hace que cualquier conflicto se resuelva
                           tomando las modificaciones de la rama a
                           incorporar




                                          Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                  Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
--theirs
                  • Estamos en medio de la resolución de un
                           conflicto que ha surgido al incorporar la
                           rama feature/3 en develop
                  • Para resolverlo, queremos quedarnos con la
                           versión de la rama feature/3

                      $ git checkout --theirs <fichero>


                                           Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                   Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
--ours
           git merge -s recursive -X ours <branch>


                  • Esto hace que cualquier conflicto se resuelva
                           tomando las modificaciones de la rama a
                           incorporar




                                          Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                  Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
--ours
                  • Estamos en medio de la resolución de un
                           conflicto que ha surgido al incorporar la
                           rama feature/3 en develop
                  • Para resolverlo, queremos quedarnos con la
                           versión de la rama develop

                      $ git checkout --ours <fichero>


                                           Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com                   Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13
Demo:
                           Conflictos en .xib


                                      Resolviendo conflictos con git by aprendegit.com is licensed under a
cursodegit.com              Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.   aprendegit.com
jueves, 4 de abril de 13

Contenu connexe

En vedette

Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015 César Hernández
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en JavaCésar Hernández
 
Estrategias aplicadas para la Resolución de Conflictos
Estrategias aplicadas para la Resolución de ConflictosEstrategias aplicadas para la Resolución de Conflictos
Estrategias aplicadas para la Resolución de ConflictosRobert Sasuke
 
Estrategias de resolución de conflictos
Estrategias de resolución de conflictosEstrategias de resolución de conflictos
Estrategias de resolución de conflictosanaapesteguia
 
Formato proyectos de aula
Formato proyectos de aulaFormato proyectos de aula
Formato proyectos de aulajasnaro
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con JenkinsCésar Hernández
 
05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarizacióncesar hernandez
 
Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...César Hernández
 

En vedette (8)

Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en Java
 
Estrategias aplicadas para la Resolución de Conflictos
Estrategias aplicadas para la Resolución de ConflictosEstrategias aplicadas para la Resolución de Conflictos
Estrategias aplicadas para la Resolución de Conflictos
 
Estrategias de resolución de conflictos
Estrategias de resolución de conflictosEstrategias de resolución de conflictos
Estrategias de resolución de conflictos
 
Formato proyectos de aula
Formato proyectos de aulaFormato proyectos de aula
Formato proyectos de aula
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con Jenkins
 
05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización
 
Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...
 

Dernier

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Dernier (10)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Resolución de conflictos en git

  • 1. Resolviendo conflictos con git Alfonso Alba García @aprendegit Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 2. Conflictos • git es muy bueno incorporando el código de una rama en otra • Aún así, milagros no hace Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 3. ¿Cuándo ocurren los conflictos? • Cuando intentamos incorporar las modificaciones de un commit en otro • ¿Y cuándo ocurre eso? Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 4. ¿Cuándo ocurren los conflictos? • merge • rebase • cherry y cherry-pick Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 5. Cuando ocurre un conflicto, el repositorio queda “bloqueado” hasta que lo resolvemos Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 6. Estado del repositorio • No podemos hacer push, pull, merge ni rebase (entre otras cosas) • Sí podemos ejecutar aquellos comandos que nos permiten resolver el conflicto Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 7. Estado del repositorio $ git status # On branch menganito # You have unmerged paths. # (fix conflicts and run "git commit") # # Unmerged paths: # (use "git add <file>..." to mark resolution) # #! both modified: cancion_del_pirata.txt # no changes added to commit (use "git add" and/or "git commit -a") $_ Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 8. Estado del repositorio Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 9. Solución 0: La patata caliente • “Esto no es cosa mía, que lo haga otro” Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 10. Solución 0: La patata caliente git reset HEAD --hard Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 11. Demo Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 12. Resolviendo el conflicto • el fichero cancion_del_pirata.txt contiene la información que necesitamos para resolver el conflicto Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 13. Canción de manuel <<<<<<< HEAD Un soneto me manda hacer Violante, en mi vida me he visto en tal aprieto; catorce versos dicen que es soneto: burla burlando van los tres delante. c Nuestros cambios Yo pensé que no hallara consonante y estoy a la mitad de otro cuarteto; mas si me veo en el primer terceto no hay cosa en los cuartetos que me espante. ======= Con diez cervezas por barba, grifo en mano, a toda vela, no corta el bar, sino vuela un borracho figurín. Los de nuestro Manuel barrigas que llaman, por su estómago, el Temido, 5 compañero de en todo bar conocido del uno al otro confín. equipo >>>>>>> fulanito Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 14. Resolviendo el conflicto ¿Y cuál era el texto original? Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 15. Resolviendo el conflicto $ git reset --hard HEAD $ git config merge.conflictstyle diff3 $ git merge <branch> Auto-merging cancion_del_pirata.txt CONFLICT (content): Merge conflict in cancion_del_pirata.txt Automatic merge failed; fix conflicts and then commit the result. Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 16. Canción de manuel <<<<<<< HEAD Un soneto me manda hacer Violante, en mi vida me he visto en tal aprieto; catorce versos dicen que es soneto: burla burlando van los tres delante. Yo pensé que no hallara consonante y estoy a la mitad de otro cuarteto; mas si me veo en el primer terceto no hay cosa en los cuartetos que me espante. ||||||| merged common ancestors Con diez cañones por banda, viento en popa, a toda vela, no corta el mar, sino vuela un velero bergantín. Bajel pirata que llaman, 5 por su bravura, el Temido, en todo mar conocido del uno al otro confín. ======= Con diez cervezas por barba, grifo en mano, a toda vela, no corta el bar, sino vuela un borracho figurín. Manuel barrigas que llaman, 5 por su estómago, el Temido, en todo bar conocido del uno al otro confín. >>>>>>> fulanito Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 17. Demo Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 18. Resolviendo el conflicto • Podemos usar herramientas externas para visualizar los conflictos • Para eso usamos git mergetool • En el caso que nos ocupa, instalaremos meld Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 19. Resolviendo el conflicto • Instalación en OS-X $ brew install meld • Instalación en Linux $ aptitude install meld Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 20. Resolviendo el conflicto $ git mergetool -t meld Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 21. Resolviendo el conflicto • Una vez editado el fichero, resolvemos el conflicto ejecutando $ git add cancion_del_pirata.txt $ git commit Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 22. Resolviendo el conflicto Merge branch 'fulanito' into menganito Conflicts: cancion_del_pirata.txt # # It looks like you may be committing a merge. # If this is not correct, please remove the file # .git/MERGE_HEAD # and try again. # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch menganito # All conflicts fixed but you are still merging. # (use "git commit" to conclude merge) # # Changes to be committed: # # modified: cancion_del_pirata.txt # Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 23. Otras formas de resolver el conflicto Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 24. --theirs git merge -s recursive -X theirs <branch> • Esto hace que cualquier conflicto se resuelva tomando las modificaciones de la rama a incorporar Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 25. --theirs • Estamos en medio de la resolución de un conflicto que ha surgido al incorporar la rama feature/3 en develop • Para resolverlo, queremos quedarnos con la versión de la rama feature/3 $ git checkout --theirs <fichero> Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 26. --ours git merge -s recursive -X ours <branch> • Esto hace que cualquier conflicto se resuelva tomando las modificaciones de la rama a incorporar Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 27. --ours • Estamos en medio de la resolución de un conflicto que ha surgido al incorporar la rama feature/3 en develop • Para resolverlo, queremos quedarnos con la versión de la rama develop $ git checkout --ours <fichero> Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13
  • 28. Demo: Conflictos en .xib Resolviendo conflictos con git by aprendegit.com is licensed under a cursodegit.com Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. aprendegit.com jueves, 4 de abril de 13