Elemi egység, a fájlokról elmentett pillanatkép. Minél gyakrabban és minél kisebb logikailag összetartozó egységet kommitoljunk A kommitokank van gyereke és szülője. HEAD: utolsó kommit
Kommitok egymásutáni sorozata (kommit pötty, branch vonal) master: automatikusan létrejön
Fejlesztésben használt fájlok, ezeken dolgozunk
Metadatok tárolása (kommitok, branchek, címkék)
apt-get install git-core git-doc git-gui gitk
git help
git help <parancs> # pl git help commit
git config --global user.name "Simon Balázs"
git config --global user.email "balazs.simon@intren.hu"
git config -l # lista
git config --global alias.co "checkout"
git config --global alias.st "status"
Új git repository létrehozása
git init
Változások listázása
git status
File hozzáadása, áthelyezése, törlése
git add <filename>
git mv <oldfilename> <newfilename>
git rm <filename>
Változások mentése
git commit
git commit -m 'commit message'
git commit -a # staging area kihagyása
Kimaradt változás hozzáadása az utolsó kommithoz vagy kommit message átírása
git commit --amend
Fájlok listája amit nem akarunk a verziókezelőben tárolni (pl konfig fájlok)
Commitok listázása
git log
git log -p # lista diff-el
Változások megtekintése
git diff
git diff -w # whitespace karakterek figyelmen kívül hagyása
git diff <oldhash>..<newhash>
git diff <oldtag>..<newtag> # tag is használható
File változások listázása
git blame <filename>
Címkézés (pl programverzió), kommit azonosítására (checkout, diff)
git tag <cimke> # címke létrehozása
git tag # használt címkék listázása
git tag -d <cimke> # címke törlése
git reset --hard
git reset --hard <hash>
git stash save "message" # mentés
git stash list # stash commitok listázása
git stash show <stash@\{0\}> # commit megtekintése, a kapcsos zárójeleket escape-elni kell!
git stash show -p <stash@\{0\}> # commit megtekintése diff-el
git stash apply <azonosito> # azonosító nélkül az utolsó kommit
git stash pop <azonosito> # azonosító nélkül az utolsó kommit
git stash drop <azonosito> # azonosító nélkül az utolsó kommit
git branch
git branch <branchname>
git branch -m <oldbranchname> <newbranchname>
git branch -d <branchname>
git branch -D <branchname> # nem mergelt branch törlése
Branchek közötti váltás
git checkout <branchname>
git checkout -b <branchname> # új branch létrehozása és abba átállás
Branchek összeolvasztása
git merge <branchname>
Repository metaadatainak ellenőrzése
git fsck
Felesleges metaadatok törlése
git gc
Kommitok elérési útvonala (git help rev-parse) ~ - kommit szülője függőleges irányban ^ - kommit szülője vízszintes irányban
Kommit másolása másik branchből (csak kicsi, hibajavító kommitot másoljunk!)
git cherry-pick <commithash>
Workspace és a repository között elhelyezkedő tároló.
- git add-al lehet hozzáadni
- git commit innen kommitolja a változást
- git commit -a kihagyja a staging area-t
Változás törlése a staging area-ból (a változás nem törlődik)
git reset
File egy részletének kommitolása
git add -p
- ? súgó
- s szétdarabolja a módosítást
- n kihagyja a módosítást
- y hozzáadás a staging area-hoz
git co -b <branchname> <commithash>
Régi kommitok módosítása, módosítása, törlése (pusholt kommitoknál ne használjuk)
git rebase -i <commithash> # -i interactive
- sor törlése: kommit törlése
- sorrend változtatása: kommitok sorrendjének változtatása
- pick: kommitot a rendszer használja
- edit: kommitot a rendszer használja, de álljon meg a feldolgozás, hogy lehessen (--amend), folytatás: git rebase --continue
- squash: kommit összeolasztása az előző kommittal
Távoli repository-k listázása.
git remote
Távoli repository adatainak megtekintése.
git remote show <name>
Távoli repository hozzáadása a local repository-hoz. Az alapértelmezet távoli repository-t konvenció szerint origin névvel szoktuk létrehozni.
git remote add <name> <url>
Távoli repository kapcsolat törlése
git remote rm <name>
Távoli repository kapcsolat nevének törlése
git remote rename <oldname> <newname>
Távoli repository lemásolása local gépre. Automatikusan hozzádódik a távoli repository origin néven.
git clone <url>
Távoli repository változásainak letöltése
git fetch <remotename> <branchname>
A letöltött változásokat nem mergeli bele a local branchbe, kézzel kell mergelni
Távoli repository változásainak letöltése és mergelése
git pull <remotename> <branchname>
Lokális változások feltöltése távoli repository-ba
git push <remotename> <branchname>