X

3-way merge tool Git-hez – P4Merge

Aki már dolgozott verziókövető rendszerekkel, tudja, hogy amikor kódot írunk, ráadásul nem egyedül, hanem csapatban fejlesztünk, óhatatlan, hogy egy másik fejlesztő belenyúl egy olyan file-ba, amit mi írtunk és fordítva, netán párhuzamosan dolgozunk rajta. Ebből adódóan az illetőnél is és nálam is két különböző verzió létezik. És ekkor még csak két emberről beszéltünk. Amikor ezeket a különböző verziókat kell egybe varázsolni, na ezt hívják merge-ölésnek. Abban az esetben, ha ritkán töltjük le a lokális gépünkre az éppen aktuális állapotot a project-ből, akkor sokkal nagyobb az esély sok conflict-ot kell megoldanunk (amikor különböző verziókból kell kitalálni, hogy mi kell a közös, végleges verzióba). Ezért ajánlatos sűrűn „git pull„-ozni. Az alap merge eszköz nem egy nagy durranás a Git-ben. Persze használható, de csak két utas és nem annyira felhasználóbarát.

2-way vs. 3-way

De mi a különbség a két-, illetve a három utas összefésülő eszköz között? Nagyon egyszerű a válasz. A két utasnál csak azt látjuk, hogy mi van abban a verzióban, ami nálunk a lokális gépünkön (Local) található és mi van a szerveren található (Remote) változatban. A 3-way verziónál kapunk egy kis extrát. A program azt is megmutatja az előbbi kettőn kívül, hogy mi volt az eredeti verzió (Base, Original), ami a Local és a Remote előtt volt. Ez által kapunk egy remek támpontot, hogy mire is lesz szükségünk a két másik változatból.

Letöltés

Az általam eddig legjobban használható és talán legkönnyebben integrálható, valamint nem utolsó sorban platformfüggetlen merge tool, a Perforce által kínált ingyenes P4Merge. Figyelem! Csak a merge tool ingyenes! Minden egyéb más szoftver a csomagban fizetős, de nekünk arra szerencsére nem lesz szükségünk.

Töltsük le a program megfelelő változatát a következő oldalról:

http://www.perforce.com/downloads/complete_list

Számomra egy 32 bites Windows-os verzióra lesz szükség és egy Mac-es 64 bites változatra a P4Merge: Visual Merge Tool -ból.

Telepítés

Miután letöltöttük, telepítsük és állítsuk is be.

Windows

Alapvetően teljesen egyszerű, next-next-finish ez is. Csak egy lépés van, ahol be kell állítani, hogy mely komponenseket szeretnénk telepíteni.

Amikor kész a telepítés, indítsuk el a Git Bash-t és adjuk ki a következő parancsokat (Az útvonal változhat, attól függően, hogy hova telepítettük):

git config --global mergetool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global merge.tool p4merge
git config --global difftool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global diff.tool p4merge

Kész is.

OSX

Megnyitjuk a dmg file-t, majd a megjelenő ablakból a p4merge.app -ot telepítjük (belehúzzuk az Applications mappába).

Hozzunk létre a felhasználói fiókunkba egy .gitconfig nevű file-t, ha még nem létezne, de nagy valószínűséggel már ott van, hiszen a korábbi Git config parancsokat ebben tárolja. Másoljuk bele ezt:

[merge]
keepBackup = false
tool = p4merge

[mergetool "p4merge"]
cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$REMOTE\"" "\"$PWD/$LOCAL\"" "\"$PWD/$MERGED\""
keepTemporaries = false
trustExitCode = false
keepBackup = false

Készen is vagyunk!

Használat

A Git Bash-ben vagy OSX-en a terminálban merge konflict esetén kiadjuk a következő parancsot:

git mergetool

És már indul is!

Hasonló cikkek

MacOs Catalina (10.15) sleep mód és az akku problé... Nemrég kellett egy clean install-t tolnom a Macbook-omon, mivel lecseréltem a mid 2012-es MBP-t egy early 2015 MBP-ra. Ennek egyenes következménye az ...
MucsaPlex, avagy Plex szerver RaspberryPi 3-on Csak a kíváncsiság kedvéért összeraktam egy rPi3-as Plex szervert, mivel kíváncsi voltam, hogy hogyan muzsikál egy ilyen jószág a rettegett erőforrási...
NodeJs + Express és HTTPS Előfordulhat, hogy szükségünk van egy SSL-es webszerverre a NodeJs-es környezetünkben. Ugyebár webszervert Express-szel a legegyszerűbb készíteni, ami...
Apache újraindítása Terminal-ból OSX-ben Két mód is kínálkozik rá: $ sudo apachectl -k restart vagy $ sudo /usr/sbin/apachectl restart Az eredmény ugyan az... sikeres restart! :) &nbsp...
Sas Sam:

View Comments (1)

  • Hi, i have reading out and i will definitely bookmarrk your site, just wanted to say i liked this article.

Related Post