miércoles, diciembre 29, 2010

Primer Merge con Git

Tengo que admitir que me está costando adquirir la práctica en git que tenía en mercurial, en parte mucho me ayuda  oh my zsh.

Hoy ocurrió lo intevitable, diego y yo tuvimos que mergear lo que veníamos haciendo. Como git pull hace un merge por defecto, intenté ver que pasaba si lo hacia de manera verborrágica:

defo:prymatex$ git pull -v origin master
From github.com:D3f0/prymatex
 * branch            master     -> FETCH_HEAD
Renaming src/prymatex/app.py => src/prymatex/core/app.py
Auto-merging src/prymatex/core/app.py
CONFLICT (rename/modify): Merge conflict in src/prymatex/core/app.py
Automatic merge failed; fix conflicts and then commit the result.

Acá tenemos un renombrado y a su vez un conflicto entre las versiones. Git me invitó a relizar los arreglos, para esto necesitaba algo visual, como kdiff3. Esta heramienta se llama git mergetool.

defo:prymatex$ git mergetool 
merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis emerge vimdiff
Merging the files: core/app.py

Normal merge conflict for 'core/app.py':
  {local}: modified
  {remote}: modified
Hit return to start merge resolution tool (kdiff3): 


Finalmente cuando completé de parchar, hice un commit, que quedó mostró lo siguiente:

defo:prymatex$ git commit -m "merge"
[master b67d4b6] merge

Ahí pude hacer push del merge sin problemas:

defo:prymatex$ git push origin master 
Counting objects: 89, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (60/60), done.
Writing objects: 100% (61/61), 11.41 KiB, done.
Total 61 (delta 42), reused 0 (delta 0)
To git@github.com:D3f0/prymatex.git
   c4e1ac2..b67d4b6  master -> master

Y gitk me muestra lo siguiente:

Algo que también se puede apreciar en el navegador de versiones de github hecho con canvas :)

No hay comentarios.: