# Navod: # Davat pozor ve ktere slozce delame zmeny! # po kazdem git prikazu dat "git log --oneline --decorate" a "git status", aby se clovek presvedcil, jaky je aktualni stav # "git clean" delame protoze merge tool muze delat backup soubory, tak aby nezustavaly na disku # misto KDiff3 a notepad++ lze pouzit libovolny jiny nastroj # Vytvorit infrastrukturu md C:\GitTests\server md C:\GitTests\clientA md C:\GitTests\clientB # server - Inicializace serveru: git init --bare # clientA - Inicializace repozitare z clientA: git init git commit --allow-empty -am "First commit" git remote add origin '\\localhost\c$\GitTests\server\' git remote --v git push --set-upstream origin master git log --oneline --decorate # clientA - nastaveni clientA: get-content .git\config git config -l # vylistuje seznam nastaveni git config --add core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" git config --edit # Pridat radky: [user] name = Jiri Pokorny email = jirka@wug.cz [credential] helper = manager [merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe trustExitCode = false [diff] guitool = kdiff3 [difftool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe trustExitCode = false [difftool] prompt = false [mergetool] keepBackup = false # clientA - vytvoreni git ignore souboru echo "" >> .gitignore git add .\.gitignore git commit -am "added gitignore" git push # clientA - Vytvoreni commitu: echo "prvni" >> readme.md git add . git status --short git commit -m "prvni spatne" git log --oneline --decorate git commit --amend git push # clientB - inicializace druheho klienta z clientB: git clone \\localhost\c$\GitTests\server . echo "druha" >> readme.md git commit -am "druha" git push # clientA - prijme zmeny: git fetch -p git log --decorate --oneline --all # clientA - vytvoreni branche git checkout -b featureA git branch git branch -vv echo "treti" >> .\readme.md git commit -am "treti" git log --decorate --graph --oneline --all # clientA - merge z masteru: git fetch origin master:master git merge master git mergetool .\readme.md git clean -xdf git commit -m "merge from master" git log --decorate --graph --oneline --all git push --set-upstream origin featureA # clientB - prijme zmeny pomoci merge: git checkout -b featureA echo "ctvrta" >> .\readme.md git commit -am "ctvrta" git log --decorate --graph --oneline --all git branch -r git branch -u origin/featureA featureA git pull git mergetool .\readme.md git clean -xdf git commit -m "merge from clientA" # clientB - vratit predchozi commit git reset head~ git checkout . # clientB - prijmout zmeny pomoci rebase: git pull --rebase git mergetool .\readme.md git clean -xdf git status git rebase --continue git log --decorate --graph --oneline --all # clientB - prace se stashem: git stash help echo "pata" >> .\readme.md git stash git stash show 'stash@{0}' git stash apply 'stash@{0}' git stash drop 'stash@{0}' # clientB - tagy git tag -a v1.0 -m "verion 1.0" head~3 git push --tags # clientA - prijme a smaze tag git fetch git tag -d v1.0 git push -d origin v1.0 # vice cviceni: https://learningitbranching.js.org # dalsi mozna cviceni: # - interaktivni rebase k oprave commitu # - presunuti/prejmenovani branche # - udelal jsem commit, ale zapomnel jsem udelat branch (detached head)