Sziasztok!
Fejlesztőkörnyezet verzióváltása miatt kénytelen leszek átváltani a Git verziókövető rendszerre (eddig VSS-t használtunk), viszont ez még teljesen új terület számomra, így elég sok kérdésem volna ezzel kapcsolatban.
Tudom, hogy egy projekthez van lokális és van megosztott repo. A commit a lokális repoba teszi a változsokat, a push a lokális repóból a megosztottba.
1. Jól értelmezem, megosztott repóban levő állományok listáját csak úgy tudom lekérdezni, hogy azokat lehúzom a lokális repóba? A lokális repó listázható az ls-files paranccsal, de ugyanezt hiányolom a megosztottra.
2. Ha olyan állományt módosítok, ami közben megváltozott, mert más fejlesztő is hozzányúlt, milyen hatékonyságú az összefűzése? Ha ugyanolyan minőségben tudja összefűzni, mint az általam eddig látott összehasonlító programok mutatják az eltéréseket, akkor agyhalál lesz megtalálni, mit kutyult össze a kódban...
3. Egy módosítás egyszerűsített ciklusa a fejemben a következő:
1. Lehúzom a megosztott repóból a legfrissebb verziót
2. Elvégzem a szükséges módosításokat
3. Commit-al berakom a lokál repóba
4. Push-al felteszem a közösbe.
Mivel időközben másik fejlesztő módosíthatott az állományokon, ezért kell egy lépés a 3. pont után, amiben ismételten lehúzom a közös repóból a változásokat, ez elvégzi a változások összefűzését.
Az itt felmerült kérdésem: mi történik, ha a 4. lépés előtt történik a közös repóban egy változás?
4. Van-e arra mód, hogy a commit előtt lekérdezzem, hogy mely állományok változtak meg a lokál repóhoz képest?
5. Van-e arra mód, hogy megnézzem a módosult állomány és a repóban levő változat különbségét? Ugyanez a kérdés áll két commitolt változat közötti eltérésre is.
Gábor
Update:
nagyon hasznos funkciót találtam a git-ben, a .git/hooks mappában levő script-ekkel nagyon szépen megvalósíthatók a számomra szükséges feladatok.
Eddig a prepare-commit-msg és a pre-push scriptet írtam meg, amivel a pillanatnyilag szükséges kiegészítő funkciókat meg tudtam valósítani.
A prepare-commit-msg bash scriptben ha szükséges, kiegészítem a commit kommentjét az aktuális dátumnak megfelelő szöveggel.
Megtaláltam a módját annak is, hogy a remote repo és a lokál repó között változott állományokat lekérdezzem:
git diff --name-only master $1/master
ahol $1 a pre-push script első paramétere, ami a remote repo elnevezése