[[oktatas:programozás:verziókontroll|< Verziókontroll]] ====== GitHub ====== * **Szerző:** Sallai András * Copyright (c) 2020, Sallai András * Szerkesztve: 2020-2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Webhely ===== * https://github.com A github.com egy git szerver, ami rendelkezik fejlett webes felülettel. Lehetőségek: * Projekt létrehozása. * Fájlok és könyvtárak fel és letöltése. * Együttműködés beállítása más felhasználókkal. * Szervezet létrehozása. * Privát és publikus tárolók. * Projektek létrehozása. * Kiadások készítése. * Weblap beállítása a tárolóhoz. * Kulcs használata azonosításhoz. * stb. ===== Kezdés ===== ==== Szerver ==== A GitHub szerver használatához regisztrálni kell egy e-mail címmel. ==== Új tároló ==== https://github.com/new ==== Tároló ==== Ha a GitHubon létrehozunk egy új tárolót, annak helyén néhány ajánlást látunk, amit elvégezhetünk a helyi gépünkön. Ha nincs még helyben git tároló: echo "# app01" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin https://github.com/janos01/app01.git git push -u origin main A janos01 felhasználót feltelezzük, az app01 tároló névvel. Ha a "git remote add" hatására azt mondja már be van állítva az origin távoli elérés, akkor javítsuk az "add" szót "set-url"-re. git remote set-url origin https://github.com/janos01/app01.git ===== README.md ===== A github.com szerverre érdemes feltenni egy README.md állományt is, A github kódnézetében, a forrásfájlok alatt a README.md állományt egy egyszerű weblapként látjuk viszont. A Markdown fájlok formázásáról többet olvashatsz a [[oktatas:web:markdown|Markdown]] fejezetben. ===== Weblap ===== A Github három lehetőséget biztosít egy tárolóhoz weboldal készítésre: * README.md fájl alapján * docs/ könyvtár alapján * gh-pages branch alapján Eredetileg csak a gh-pages ággal működött. Mar már a master (vagy main) ágon is létrehozhatunk egy docs könyvtárat, és abban elhelyezhetjük a weblapot. ==== gh-pages branch ==== Létrehozunk egy ágat, aminek nincs előtörténete gh-pages néven: git checkout --orphan gh-pages Töröljük tartalmat: git rm -rf . Töröljük ki a maradék tartalmat, majd hozzuk létre a weblapot: index.html A weblap itt látszik: * https://pendes.github.io/tenger/ ==== Beállítás ==== A projekt kiválasztása után: * **Settings** fül * **Pages** bal oldalon * **Source** kombobox ==== Weblap a felhasználó számára ==== Hozzunk létre egy olyan projektet, ami felhasználónevünk, majd github.io névre végződik. valaki.github.io git clone https://github.com/valaki/valaki.github.io cd valaki.github.io echo "Saját weblap" > index.html git add --all git commit -m "Kezdés" git push -u origin main Forrás: * https://pages.github.com/ (2022) ===== Nyilvános kulcs nélkül ===== git remote add origin https://github.com/janos/projekt02.git A kimenet hasonló lehet: $ git push -u origin master Username for 'https://github.com': janos Password for 'https://janos@github.com': Enumerating objects: 28, done. Counting objects: 100% (28/28), done. Delta compression using up to 2 threads Compressing objects: 100% (20/20), done. Writing objects: 100% (28/28), 3.22 KiB | 1.61 MiB/s, done. Total 28 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), done. To https://github.com/janos/projekt02.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'. ===== Együttműködés ===== Ha együttműködésben dolgozunk valakivel, és az együttműködő partnerünk már létrehozta a projektet, és legalább egy kezdőállapotot feltöltött a szerverre, akkor git clone paranccsal kezdjünk, a git init helyett. git clone ... ===== A kezdő branch neve ===== A kezdő brancs neve lehet main is. Ha szeretnénk beállítani, hogy mindig így jöjjön létre: git config --global init.defaultBranch main Ha nem így hoztuk létre nevezzük át: git branch -m main Nem kötelező main legyen, csak a master kerülendő a GitHub szerint. ===== Windows 10 hitelesítő adatok ===== Gyakori probléma **osztott módon használt gépeknél**, hogy nem működik a ''git push'' parancs, mivel valaki más nevében szeretne a git hitelesíteni. Egy CLI és egy GUI megoldást látunk itt. ==== CLI ==== Két parancsra van szükségünk: * cmdkey /list * cmdkey delete:Target A cmdkey /list listázza a bejegyzett hitelesítőadatokat: cmdkey /list Keressük meg van-e GitHub-ra vonatkozó beállítása. Törlés: cmdkey /delete git:https://github.com ==== GUI ==== GUI felületen: * Vezérlőpult > * Kategória nézet esetén: * Felhasználói fiókok: * Hitelesítőadat-kezelő * Windows rendszerbeli hitelesítő adatok kezelése. * Ikon nézet esetén: * Hitelesítőadat-kezelő > * Windows rendszerbeli hitelesítő adatok kezelése. Keressünk egy GitHub-hoz beállított hitelesítő adatot. Töröljük. ==== Egyéb ==== A hitelesítő adatok gyorsítótárának használatának tiltása (így kér jelszót): git config --global --unset credential.helper === A név és e-mail beállítása === Nevek, e-mailek cseréje: git config --global --replace-all user.name "Nagy János" git config --global --replace-all user.email "janos@zold.lan" Nevek és e-mail megszüntetése: git config --global --unset user.name git config --global --unset user.email git config --global --unset-all user.name ===== Statikus weboldal ===== * Válasszuk ki a GitHub tárolót (repository) * Felül kattintsunk a Settings fülre * Pages lehetőség baloldalon ===== Windows SSH hitelesítés ===== choco install openssh Kulcsgenerálás: ssh-keygen Ha legyártottuk a kulcsot, vágólapra kell tenni: type .ssh\id_rsa.pub | clip PowerShellben közvetlenül: Get-Content .ssh\id_rsa.pub | Set-Clipboard (macOS-en pbcopy parancsra kell irányítani) ===== Linuxon SSH hitelesítés ===== Linuxon automatizálhatjuk a feltöltést, ha ssh kulcsot használunk. Gyártsuk le az ssh-keygen paranccsal egy privát és publikus kulcspárt: ssh-keygen Gyárthatunk külön fájlt: ssh-keygen -f github_valaki_rsa.pub Nézzük meg a publikus kulcs tartalmát: cat ~/.ssh/id_rsa.pub A kulcs tartalmát másoljuk vágólapra. cat ~/.ssh/id_rsa.pub | xclip -sel clip A GitHub webhelyen: * Válasszuk ki a kívánt tárolót. * "Settings" link * "Deploy keys" baloldalon. * "Add deploy key" gomb, valahol jobbra fent. * Adjunk meg egy tetszőleges nevet * Lehetőleg utaljon arra, melyik gépen található a titkos kulcs ==== SSH beállítása ==== Szerkesszük a ~/.ssh/config fájlt, vegyünk fel egy bejegyzést: Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa.pub IdentitiesOnly yes ===== Token alapú azonosítás ===== * Profil ikon > Settings > Developer settings * Personal access tokens * Tokens (classic) * [Generate new token] * Generate new token (classic) {{:oktatas:programozas:verziokontroll:token_keszites_01.png|}} ==== Scope beállítása ==== Egyetlen pipa: * [✔] workflow Ez kipipálja az előző "repo" részt. A workflow joggal használhatjuk a "git push" parancsot. {{:oktatas:programozas:verziokontroll:token_jogok_02.png?400|}} ==== Elkészült token ==== {{:oktatas:programozas:verziokontroll:token_elkeszult_03.png?400|}} ===== GitHub CLI ===== * https://github.com/cli/cli (2023) Ellenőrzés: gh --version ===== Hibák ===== Azonosítás probléma. Hibaüzenet git push eredményeként: * Missing or invalid credentials. Amit ellenőrizzünk: * VSCode * settings-git: Terminal Auth * settings-github: Git Auth