Írta: tom1964h

Távoli repository

A Git a local repó kezelése mellett a távoli (központi) repository eléréséhez is kínál többféle (pl. parancssori) eszközöket. Az mindegy, hogy a távoli repó egy nagy szolgáltató (nevezhetjük őket hub-nak is) vagy a cég saját, privát központi repository-ja. A Git local repó szempontjából mindegy, hogy a GitHub vagy GitLab szolgáltatónál van-e távoli repository.

Fontos látni azt is, hogy a Git program nem egyenlő a GitHub-bal, a Bitbucket-tel és a többi rendszerrel. A Git egy technológia, aminek a megvalósítása a GitHub, a GitLab, stb. A Git lehetővé teszi azt, hogy helyileg, központi repó nélkül is használjunk verziókezelést.

A Git helyi használata az egyéni fejlesztéseket kiszolgálja. Nem kell távoli szervert használni. De azzal, hogy a local repó-t össze tudjuk kötni egy szerver oldali repository-val, nagy előrelépés. Az összekapcsolással a távoli repót nevezzük ki a repónak, mindenki más lemásolhatja a repónkat a saját gépére: mert másoknak is jogot adhatunk, hogy lemásolja magának a repónkat és módosításokat végezhessen rajta, majd feltöltse a mi repónkba az új kódokat.

Hierarchia alakul így ki a repository-k között, a távoli lesz a fő repó.


teammunka Git segítségével:
néhány parancs a helyi repó használatához és a távoli repóval folytatott adatforgalomhoz

A távoli repó használatához regisztrálni kell a szerveren és meg kell szerezni a remote repó (SSH vagy HTTPS) elérhetőségét.

Git eszközök távoli elérésre

A GitHub-on egy nagyon jó összeállítást olvashatunk a témában Use Git to manage your GitHub repositories from your computer címmel. Itt néhány fontosabb parancsot érintünk csak távirati stílusban.

CONFIG
git config --global ...
A helyi repository-t csak akkor lehet összekötni bármilyen szerver repository-val, ha konfiguráljuk a Git globális paramétereit: a felhasználó nevét és E-mail címét. Azonosítani kell magunkat mielőtt a szerver repóval kapcsolatba lépünk.

  • git config --global user.email "...." így rögzíthetjük be az E-mail-címet
  • git config --global user.email lekérdezhetjük a már berögzített E-mail-címet
  • git config --global user.name "...." így tárolhatjuk le felhasználónevet - ezzel a szerzői névvel lesznek elmentve a commit-jaim
  • git config --global user.name lekérdezhetjük a már berögzített felhasználónevet

REMOTE
git remote add origin ...url...

  • alkalmas a helyi és a távoli repó összekötésére: hozzáadjuk a local repóhoz a távoli elérést, akárcsak pl. az adatbázis-elérést egy programhoz JDBC-connection esetében
  • a hozzákötést egy URL beírásával érjük el
  • az origin elnevezés ebben a sorban azt jelenti, hogy az origin után szereplő távoli repót ezentúl a hosszú URL-cím helyett csak egy szóval, az origin-nel fogjuk nevezni (egy alias-t állítunk be a gépünkön)
  • a továbbiakban elég a távoli repóra origin-ként hivatkozni
  • a távoli repó kiterjesztése itt is .git akárcsak a local repó esetében

CLONE
git clone
A git clone leklónozza, lemásolja a központi repót egy helyi mappába, létrehozza a helyi repót és össze is köti az eredetivel. Két lépést csinál meg egyszerre: git init + git remote (létrehoz és hozzákapcsol): létrehoz egy helyi repó-t és abba létrehoz egy almappát, amit lehúzott a központi repóból.
git clone ...url... parancs egy konkrét repót képes leklónozni

PUSH
git push -u origin master

  • felküldjük az összes commitunkat az origin néven hívott távoli repó master branch-ébe
  • a távoli repót ehhez előbb be kell kötni
  • a -u kapcsoló azt állítja be, hogy a cél ezentúl alapból origin alias-névvel nevezett repó master branch-e lesz
  • a cél a master branch lesz: a repó-n belül a fő-ág megnevezése alapból master branch
  • a master branch mellett számos más branch, azaz fejlesztési vonal létezhet egy repository-n belül

PULL
git pull ...url... ...branch....
A git pull letölti a commit-okat és merge-li az aktuális branch-ba. Használatát magyarul lásd még pl. itt és itt.

GitHub signup


regisztráció a GitHub oldalon: SignUp
forrás github.com

A GitHub regisztrációs menüje megváltozott, az eddig megszokott (és más oldalakhoz hasonló) regisztrációs űrlap helyett egy stilizált terminálon kérdezi meg a program a mailcímet, majd ha ez a site-nak új, felajánl egy erős jelszót - csak ezután enged tovább dolgozni. Ajánlott valamilyen konszolidált felhasználónevet választani, amit vállalhat az ember a főnökei, vagy egy nagyobb meeting résztvevői, a kollégák és az online fórumok előtt is, nem valami idétlen kifejezés.

Git távoli kapcsolódási módok

A távoli repóval folytatott munka megváltoztat pár dolgot az eddigi egygépes munkánkkal szemben:

  • a rákapcsolódás után a távoli repó lesz a fő tároló, innen mások is letölthetnek kódokat
  • azonosítás szükséges: milyen git felhasználói fiókkal csatlakozok a távoli repóhoz
  • fontos ismerni a távoli repó URL-jét
  • fontos ismerni a távoli repóban létező branch-ek nevét

1-es kapcsolódási mód: amikor előbb volt a helyi repó: a helyi repóhoz kötöm a távolit (remote), majd felküldöm a tartalmat (push); ehhez ezt kell tennem:

git remote add origin ....
létrehozok egy távoli üres repót majd a helyi repóhoz hozzáadok “origin” alias-névvel egy távoli repót, aminek az URL-jét beillesztem a parancs végére
git push origin master
a helyi repóm tartalmát (az összes commitomat) felküldöm a központi repóba, amelyben létesül egy master nevű branch

2-es kapcsolódási mód: amikor létezik a helyi repó, de létezik a nem üres távoli repó is:

git pull origin master lehúznám a létező repót, de az már tartalmaz commitokat, amire a Git hibát jelez - ez probléma: ha mindkét repó volt már használva
git pull origin master --allow-unrelated-histories engedélyezi a nem ismert változtatások átvezetését
git push origin master
ezután már fel tudom küldeni a saját kis módosításaimat

3-as kapcsolódási mód: amikor a távoli repó volt előbb, akkor le kell húznunk a távoli repót a gépünkre, majd létre kell hozni egy mappát (working directory) és el kell inditani a helyi repót is, utoljárs ezt össze kell kötni a távoli repóval. Ehhez vagy a git init + git remote + git pull (létrehozás és lehúzás) parancs-kombinációt használjuk, vagy: git clone ... ...

Egy lokális repót több távoli repóhoz is hozzá tudok csatlakoztatni - de ezt a módot nagyon ritkán használják.

GitHub etikett

  • előbb mindig pull, aztán push
  • masterben soha nem fejlesztünk, mindig létrehozunk egy önálló branch-et
  • ha változás van, a git diff head megmutatja mi változott

GitHub remote repository létrehozása

A GitHub oldal főmenüjében a plusz gomb alatt kezdeményezhetjük az új repository létrehozását (itt bővebb angol nyelvű segítség).


New Repository a főmenüben :: forrás github.com


Feljön egy menü, amelyben megadhatjuk az induló paramétereket:
  • adjuk meg a repó nevét (előtte a tulajdonos neve már ki van töltve)
  • írjunk be egy rövid leírást (Description)
  • a repónk eleve Public, azaz nyilvános (lehet Private, azaz zárt repót is létrehozni)
  • javasolt, hogy ikszeljük be az Add a README file opciót (bár most nem készítünk ilyet, de általában fontos, hogy pár mondatban bővebb leírást adjunk a repó-hoz
  • alul a Create repository nagy zöld gomb felett van egy utalás arra, hogy mi legyen a default branch-name (alapból main-re van állítva); ha mást szeretnénk beállítani, a setting linkkel átjuthatunk egy beállító képernyőre:


forrás github.com


GitHub remote repository törlése


forrás github.com


A repository a főmenüjében a fogaskerék ikon alatt találhatjuk a SETTINGS menüt. Ezt választva lejjebb tudunk belépni a “Danger zona”-ba, ahol a tulajdonlás-átadási és a törlési lehetőségeket találhatjuk.


forrás github.com


A törlés nem egyszerű, a szándékot külön kis ablakban még egyszer meg kell erősíteni, sőt, a repó elnevezését még egyszer be kell írni.


forrás draw.io