Git verziókezelő Linux alatt

Régebb óta foglalkoztatott, hogy valamilyen módon bemutassam a Git verziókezelő rendszer használatát Linux operációs rendszer alatt. Messze nem ismerem minden lehetőségét, de amit tudok, azt szívesen továbbadom másoknak.
Először egy hosszabb screencast készült, amely technikai problémák miatt nem sikerült túl jól. Ezután témákra lebontva, részletesebben ismertetve az egyes részeket a következő hét videó készült, a teljes műsoridő két óra felett van.

Frissítve: Készült egy 8. videó is, beteszem ide a többihez, összesen kb. 206 perc.

Frissítve 2.: A videókhoz készült egy rövid jegyzet is, elérhető ezen a linken. Ha nem jelenik meg helyesen a böngészőben, akkor állítsd át a megjelenést UTF-8-ra. Minden videó és a jegyzet a szokásos licenc szerint használható. :)

Git verziókezelő Linux alatt - 1. Fogalmak, telepítés, beállítások

  • fogalmak: kommit, branch, workspace, repository
  • telepítés
  • git help
  • git config

(alternatív link)

Git verziókezelő Linux alatt - 2. Kezdeti lépések

  • git init
  • git status
  • git add, git mv, git rm
  • .gitignore
  • git commit -a
  • git log
  • git diff
  • git blame

(alternatív link)

Git verziókezelő Linux alatt - 3. Címkék és kezdő hasznosságok

  • gitk
  • git tag
  • git checkout
  • git reset
  • git commit --amend
  • git stash
  • git archive

(alternatív link)

Git verziókezelő Linux alatt - 4. Branch-ek kezelése

  • git branch
  • git checkout
  • git merge

(alternatív link)

Git verziókezelő Linux alatt - 5. További hasznosságok

  • git fsck
  • git gc
  • kommitok elérése útvonallal (git help rev-parse)
  • staging area: git add & git commit, git add -p & git commit
  • git cherry-pick

(alternatív link)

Git verziókezelő Linux alatt - 6. Rebase alapjai

  • git rebase

(alternatív link)

Git verziókezelő Linux alatt - 7. Távoli elérés

  • git clone
  • git pull
  • git fetch
  • git remote
  • git push
  • GitHub

(alternatív link)

Git verziókezelő Linux alatt - 8. Egyebek

  • használt alias-ok
  • git tag: annotated, lightweight
  • git branch: --track, --no-track
  • git push: címke feltöltése, eltérő branch-nevek, távoli branch törlése

(alternatív link)

Ui.: Valaki nemrég azt mondta, hogy egy ilyen videó elkészítése kb. tízszer annyi időt emészt fel, mint maga a videó hossza. Nos igen, ezt tanúsíthatom.

Hozzászólások

Igen, ez egészen biztosan igy van. Igaz, én még videos helpet nem csináltam, de épp eleget szenvedek képes/szöveges end-usereknek szóló doksik irásával. A Git-tel meg én is most kezdek ismerkedni, szuper volt a bemutatása!
Köszönöm szépen!

a jegyzet sajnos nem elérhető, 404-et dob az oldal

Nagyon szép oktató anyag!
Hálám örökké üldözni fog :D !

Remek anyag, köszönjük :)

Windowsos használatról nem tudsz esetleg hasonló videós bemutatót?

Anno csináltam két workshop-ot róla, sajnos a UStream hibája miatt nem sikerült őket rögzíteni. Más anyagról nem tudok és én sem tudom megigérni, hogy a közeljövőben lesz időm foglalkozni vele. De ha találsz, akkor egy hozzászólásban linkeld be ide, mert másnak is jól jöhet.
Köszi! :)

Köszönöm ezt a részletes videósorozatot. Igazán sokat tanultam belőle.
Egyébként amíg rendesen feldolgoztam az infókat, az is jóval tovább tartott, mint a videók tényleges hossza ;)

Nagyon hasznos lett az összeállítás, sokat tanultam belőle!

HAL 9000-nek köszönhetően készült egy gyorsjegyzet az első hét videóhoz:

a fejlesztésben használt file-k, amiket szerkesztünk, metaadatok nélkül ;workspace
a metaadatok tárolására szolgál, itt mentődnek el a kommit-ok és a branch-ek ;repository
elemi egység, a fájlokról egy elmentett pillanatkép ;commit
utolsó kommit ;HEAD
fejlesztési ág, a kommitok egymásutánja ;branch
default branch ;MASTER
help ;git help
részletes help az adott parancsról ;git help [parancs]
név elmentődik a kommitba, ezért be kell állítani ;git config --global user.name "Gipsz Jakab"
emil, elmentődik a kommitba, ezért be kell állítani ;git config --global user.email "x@y.com"
az oktális forma helyett normálisan menti el az ékezetes betűket ;git config --global core.quotepath false
a kimenetet színezi, hogy érthető legyen ;git config --global color.ui auto
alias név megadás, itt pl checkout helyett co ;git config --global alias.co "checkout"
kiírja az eddigi beállításoka;git config -l
létrehozza a Git repository-t .git néven ;git init
a verziókezelés állapota;git status
létrehoz egy filet ;touch [filename]
hozzáadja a verziókezeléshez a filet ;git add [filename]
mindent hozzáad a verziókezeléshez ;git add .
commitál a staging area használata nélkül, ezután a változásokat pl: "xy fájl hozzáadva" leíró megjegyzést kell írni hozzá ;git commit -a
változatot commitál , ezután a változásokat pl: "xy fájl hozzáadva" leíró megjegyzést kell írni hozzá ;git commit -a --amend
commitál és megjegyezést fűz ;git commit -a -m "megjegyzés"
átnevezés;git mv [régi_név] [új_név]
törlés;git rm [filename]
rejtett file létrehozása, pl azért mert érzékeny beállításokat tartalmaz (.-al kezdődő filék linuxban rejtett fáljnak minősülnek) ;touch .gitignore
filek kihagyása a verziókezelésből (gitignor);vi .gitignore, majd a gitignorba "*.old" -t írni, majd elkommitolni a változás - kihagyja a *.old-okat
eddigi commit-ok listája ;git log
az utolsó 3 commit listája ;git log -3
két kommit közötti változást mutatja ;git diff [hash1min7]..[hash2min7]
két kommit közötti változást mutatja ;git diff [tag1_name]..[tag2_name]
két kommit közötti változást mutatja, de a TAB-ot nem veszi változásnak ;git diff -w [hash1min7]..[hash2min7]
megutatja, hogy melyik sort ki kommitolta ;git blame [filename]
grafikus ablak ;gitk
commitnek cimkét ad, és csak annak amelyiken vagyok ;git tag [tag_name]
commitből cimkét töröl, de csak annak amelyiken vagyok ;git tag -d [tag_name]
visszaálni a branchre ;git checkout [tag_name]
az utolsó kommitot eldobja ;git reset --hard
a hash-el azonosított kommitot eldobja;git reset --hard [hash1min7]
átmenetileg elmenti a filéket;"git stash save "filename"
az átmenetileg elmentett filek ;git stash list
részletesn mutatja az átmenetileg elmentett fileket ;git stash show
részletesn mutatja az átmenetileg elmentett fileket és a különbségeket is (0-a módisítás sorszáma) ;git stash show -p stash@\{0}
az átmeneti tárolóban lévő utolsó file visszahozása, úgy, hogy az ott is megmaradjon ;git stash apply
az átmeneti tárolóban lévő 0-ás számú file visszahozása, úgy, hogy az az átmeneti tárolóból törlődjön ;git stash pop stash@\{0}
az átmeneti tárolóban lévő 0-ás számú file törlése a tárolóból ;git stash drop stash@\{0}
tömörítve elmenti a teszt könyvtárat;teszt$ git archive HEAD | gzip > ../teszt.tar.gz
elérhető fejlesztési ágak (branch) ;git branch
új fejlesztési ág (branch) indítása;git branch [név]
fejlesztési ágak (branch) közötti váltás;git checkout [tag_name]
fejlesztési ágak (branch) összefűzése;azon az ágon kell lenni, ahova mergel-ni akarom a másik ágat és: git merge [másik branch]
egyben látni grafikusan a fejlesztési ágakat;gitk --all
branchek átnevezése;git branch -m [régi_név] [uj_név]
branch törlés annak ellenőrzésével, hogy tartalma mergelve volt-e;
branch törlés annak ellenőrzése nélkül hogy tartalma mergelve volt-e;git branch -D [nev]
repo épségének ellnőrzése;git fsck
repo által elfoglalt terület;du -s .git
repo újraszervezése, méretének csökkentése;git gc
kommit elérése azonosító és tag nélkül, azaz lépegetés;"git log HEAD~[lépések száma]^[lépések száma]~[lépések száma]^[lépések száma]stb.. (~függőleges; ^vízszintes)"
lépegetés helpje;git help rev-parse
staging area - köztes tár használata, azaz nem az összes módosítás elmentése: csak a kívánatos filéket add-oljuk a sa-hoz, majd:;git commit [filename]
fájl részeinek kommitolása, ?-re jó helpet kapunk;git add -p
létrehoz egy branchet és aktívvá is teszi;git checkout -b [branch_name]
commit átmásolása egy másik ágba (óvatosan!);git cherry-pick [hash]
commitok átstruktúrálása, törlése (még óvatosabban!);git rebase -I HEAD~[commitok száma]
Az egyel ezelőtti commitból kiágazó branch létrehozása és átváltás rá;git checkout -b [branch_name] HEAD~
Másik repository betöltése;git clone [URL]
Távoli repo összerendelés;git remote add origin [URL]
Megmutatja, hogy a távoli repo összerendelés milyen URL-re mutat;git remote -v
Távoli repo összerendelés nevének megváltoztatása;git remote rename [nev] [új_nev]
Távoli repo összerendelés törlése;git remote rm
SSH kapcsolat;ssh -2 valami@valami -desktop
Részletebb info a távoli repor;git remote show [nev]
Repo tartalmának feltöltése a távoli repo-ba, úgy hogy a cimkék is felmenjenek;git push --tags [repo_nev] [branch1] [branch2]
Repo tartalmának letöltése, klónozása;~/könyvtár git clone ssh://cél elérési út
Helyi branchek a távoli branchekre való hivatkozásokkal;git branch -a
Váltás egy távoli hivatkozásban található branchre;git checkout -b devel remotes/[távoli hivatkozás neve]/[branch neve]