[[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
===== Release =====
A Release kadást jelent.
A kiadás létrehozása során meg kell adnunk egy tag-t. Például:
* v1.0.0
Release title:
* v1.0.0 - Első stabil kiadás
Húzzuk a kiadást ide: Attach binaries by dropping them here or selecting them.
===== 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