|
Next revision
|
Previous revision
|
dev:git [2022/01/26 11:37] 127.0.0.1 external edit |
dev:git [2025/06/09 15:35] (current) tomas [užitečné nástroje] |
| [[https://www.git-tower.com/learn/git/ebook/en/command-line/appendix/best-practices|Best practice]]\\ | [[https://www.git-tower.com/learn/git/ebook/en/command-line/appendix/best-practices|Best practice]]\\ |
| [[https://www.atlassian.com/git/tutorials/comparing-workflows/centralized-workflow|Tutorial on workflow]]\\ | [[https://www.atlassian.com/git/tutorials/comparing-workflows/centralized-workflow|Tutorial on workflow]]\\ |
| | |
| | ====užitečné nástroje==== |
| | [[https://pre-commit.com|pre-commit]] ... automatické akce v případě volání git hooku, jako třeba git commit. Např automaticky zformátuje a zvaliduje kód\\ |
| | conventional commits ... prefix konvence commitů pro lepší rozpoznání účelu a pro automatické generování changelogu\\ |
| | sme\\ |
| | [[https://github.com/cookpete/auto-changelog|auth-changelog]] ... automatické generování changelogů\\ |
| | [[https://medium.com/opensight-ch/git-semantic-versioning-and-conventional-commits-564aece418a0|článek]] o použití sematického verzování, conventional commits, release note, change logu atd\\ |
| | [[https://git-scm.com/book/en/v2/Git-Tools-Submodules|Submodule]] ... možnost mít v git repozitáři namountované i jiné repozitáře v podadresářích, když máme závislosti na jiné repa\\ |
| |
| ====git promenne==== | ====git promenne==== |
| ''git config %%--%%global user.name "John Doe"''\\ | ''git config %%--global user.name "John Doe"%%''\\ |
| ''git config %%--%%global user.email johndoe@example.com''\\ | ''git config %%--%%global user.email johndoe@example.com''\\ |
| ''git config %%--%%list'' ... seznam promennyh\\ | ''git config %%--%%list'' ... seznam promennyh\\ |
| ''git config %%--%%list %%--%%system' ... zobrazi systemove promenne\\ | ''git config %%--list --%%system'' ... zobrazi systemove promenne\\ |
| ''git config %%--%%list %%--%%global' ... zobrazi globalni promenne\\ | ''git config %%--list --%%global'' ... zobrazi globalni promenne\\ |
| ''git config %%--%%global alias.co checkout'' ... aliasy\\ | ''git config %%--%%global alias.co checkout'' ... aliasy\\ |
| ''git config %%--%%global credential.helper cache'' ... cachovane kredence\\ | ''git config %%--%%global credential.helper cache'' ... cachovane kredence\\ |
| |
| ====Prace s kodem, schvalovani zmen, historie==== | ====Prace s kodem, schvalovani zmen, historie==== |
| git status ... aktualni vetev a zmeny v ni\\ | ''git status'' ... aktualni vetev a zmeny v ni\\ |
| git status -s ... aktualni zmeny - 1 soubor = 1 radek\\ | ''git status -s'' ... aktualni zmeny - 1 soubor = 1 radek\\ |
| git add service_scanner.sh *.txt ... pridani souboru do stage - kontrola GITem, po commitu se to ulozi k dane verzi projektu\\ | ''git add service_scanner.sh *.txt'' ... pridani souboru do stage - kontrola GITem, po commitu se to ulozi k dane verzi projektu\\ |
| git commit -m "komentar k commitnuti" ... potvrzeni kodu k odeslani u vsech souboru pridanych pomoci add\\ | ''git blame -L 5,10 helm/values.yaml'' ... ukaze autory jednotlivych radku\\ |
| git commit --amend ... oprava posledniho commitu\\ | ''%%git commit -m "komentar k commitnuti"%%'' ... potvrzeni kodu k odeslani u vsech souboru pridanych pomoci add\\ |
| git reset HEAD service_scanner.sh ... odebere soubor service_scanner z commitu\\ | ''git commit --amend'' ... oprava posledniho commitu\\ |
| git reset --hard origin/dev ... prepise na tvrdo lokalni zmeny ?\\ | ''%%git commit --fixup 1e30877%%'' ... commitne zmeny jako opravu commitu 1e30877\\ |
| git checkout -- service_scanner.sh ... vrati zmeny z service_scanner.sh, ktere jsme provedli v souboru\\ | ''git reset HEAD service_scanner.sh'' ... odebere soubor service_scanner z commitu\\ |
| | ''%%git reset --hard origin/dev%%'' ... prepise na tvrdo lokalni zmeny ?\\ |
| | ''%%git checkout -- service_scanner.sh%%'' ... vrati zmeny z service_scanner.sh, ktere jsme provedli v souboru\\ |
| [[https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History|git log]] ... seznam historie commitu - check sum, popis, datum, autor\\ | [[https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History|git log]] ... seznam historie commitu - check sum, popis, datum, autor\\ |
| git log --pretty=oneline ... jednoradkovy, pouze check sum a popis\\ | ''git log --pretty=oneline'' ... jednoradkovy, pouze check sum a popis\\ |
| git log -p ... ukaze historii i se zmenama\\ | ''git log -p'' ... ukaze historii i se zmenama\\ |
| git log --stat ... ukaze jen statistiky zmen\\ | ''git log --stat'' ... ukaze jen statistiky zmen\\ |
| git show ... ukaze posledni zmeny\\ | ''%%git log --oneline -5 --author lipensky --before "Fri Mar 26 2009"%%'' ... filtr pro log\\ |
| git diff ... porovna zmeneny soubor oproti puvodnimu (z git lokalnih repozitare)\\ | ''git show'' ... ukaze posledni zmeny\\ |
| | ''git diff'' ... porovna zmeneny soubor oproti puvodnimu (z git lokalnih repozitare)\\ |
| .gitignore ... ignore list pro stage a commit\\ | .gitignore ... ignore list pro stage a commit\\ |
| git rm a.txt ... odebere z repozitare a.txt\\ | ''git rm a.txt'' ... odebere z repozitare a.txt\\ |
| git mv b.txt a.txt ... prejmenuje v repu b.txt na a.txt\\ | ''git mv b.txt a.txt'' ... prejmenuje v repu b.txt na a.txt\\ |
| | |
| | ''git reflog'' ... seznam zmen\\ |
| | ''git revert'' ... vrati zmeny\\ |
| | ''git reset'' ... pozor, muze byt nebezpecne, ztrata zmen\\ |
| | ''%%git rebase -i --autosquash 7dbe2a9%%'' ... rebase - slouci fixupy (opravy), otevre v rebase interaktivnim modu\\ |
| | ''git merge origin master'' ... udela pull commitu z masteru a jejich merge do aktualni vetve\\ |
| | ''git rebase -i HEAD~3'' ... rebase poslednich 3 commitu\\ |
| | ''git shortlogs'' ... vylistuje comity podle autoru\\ |
| | ''git gc'' ... garbage collection\\ |
| |
| git reflog ... seznam zmen\\ | |
| git revert ... vrati zmeny\\ | |
| git reset ... pozor, muze byt nebezpecne, ztrata zmen\\ | |
| git gc ... garbage collection\\ | |
| ====Tagy==== | ====Tagy==== |
| Vice info: [[https://git-scm.com/book/en/v1/Git-Basics-Tagging]] | Vice info: [[https://git-scm.com/book/en/v1/Git-Basics-Tagging]] |
| |
| ''git tag -a 1.0.1 -m %%"%%applied hotfix 1%%"%%'' ... prida tag k posledni zmene (commitu)\\ | ''%%git tag -a 1.0.1 -m "applied hotfix 1"%%'' ... prida tag k posledni zmene (commitu)\\ |
| ''git tag -a 1.0.0 -m %%"%%initial version%%"%% 20721acbb115cc33848dfcc21'' ... otaguje commit, jehoz check sum, nebo jeho cast je v parametru\\ | ''git tag -a 1.0.0 -m %%"initial version"%% 20721acbb115cc33848dfcc21'' ... otaguje commit, jehoz check sum, nebo jeho cast je v parametru\\ |
| ''git show 1.0.1'' ... ukaze zmeny pro dany tag\\ | ''git show 1.0.1'' ... ukaze zmeny pro dany tag\\ |
| ''git tag'' ... seznam tagu\\ | ''git tag'' ... seznam tagu\\ |
| ''git tag pracovni'' ... prida lehky tag - bez komentaru, k posledimu commitu\\ | ''git tag pracovni'' ... prida lehky tag - bez komentaru, k posledimu commitu\\ |
| ''git tag -l %%"%%prac*%%"%%'' ... vylistuje vsechny tagy, co zacinaji na prac\\ | ''git tag -l %%"prac*"%%'' ... vylistuje vsechny tagy, co zacinaji na prac\\ |
| ''git push REMOTE TAG'' ... odesle zmeny do repozitare REMOTE s tagem TAG, jinak se tagy neprenasi\\ | ''git push REMOTE TAG'' ... odesle zmeny do repozitare REMOTE s tagem TAG, jinak se tagy neprenasi\\ |
| ''git push REMOTE %%--%%tags'' ... odesle zmeny do repozitare, prenese i tagy\\ | ''git push REMOTE %%--%%tags'' ... odesle zmeny do repozitare, prenese i tagy\\ |
| 'git notes add -m "Zkontrolovano 2019/05/12' ... pridani note\\ | ''%%git notes add -m "Zkontrolovano 2019/05/12"%%'' ... pridani note\\ |
| |
| ====Vetve / branches==== | ====Vetve / branches==== |
| git commit -a -d %%"%%oprava hotfix1%%"%% ... add (-a = add na vsechny soubory, co se zmenily) a commit (schvaleni zmen)\\ | git commit -a -d %%"%%oprava hotfix1%%"%% ... add (-a = add na vsechny soubory, co se zmenily) a commit (schvaleni zmen)\\ |
| git checkout master ... prepne zpet do puvodni vetve\\ | git checkout master ... prepne zpet do puvodni vetve\\ |
| git merge hotfix1 ... sjednoti zmeny - prijme zmeny z hotfixu do aktualni branche\\ | |
| git branch -d hotfix1 ... smaze vetev hotfix1\\ | git branch -d hotfix1 ... smaze vetev hotfix1\\ |
| git branch ... seznam vetvi, ukaze aktualni\\ | git branch ... seznam vetvi, ukaze aktualni\\ |
| git checkout -b hotfix1 origin/hotfix1 ... vytvori novou lokalni vetev - kopii vzdalene vetve hotfig1\\ | git checkout -b hotfix1 origin/hotfix1 ... vytvori novou lokalni vetev - kopii vzdalene vetve hotfig1\\ |
| | git rebase master ... jako merge, ale není fast forward, feature branch A-B-C-D, master branch A-B-E-F, vysledek A-B-E-F-C-D |
| | git merge master ... sjednoti zmeny - prijme zmeny z master do aktualni branche, feature branch A-B-C-D, master branch A-B-E-F, vysledek A-B-C-D-E-F\\ |
| | |
| | ====git vnitrnosti==== |
| | git count-objects -v ... statistiky objektu\\ |
| |
| ====git flow==== | ====git flow==== |
| curl -k --header %%"%%PRIVATE-TOKEN: $TOKEN%%"%% https://gitlab.url.com/api/v3/groups/my-group 2>/dev/null | grep -o "[^,\"]\+:my-group/[^,\"]\+\.git" ... url na vylistovani objektu grupy\\ | curl -k --header %%"%%PRIVATE-TOKEN: $TOKEN%%"%% https://gitlab.url.com/api/v3/groups/my-group 2>/dev/null | grep -o "[^,\"]\+:my-group/[^,\"]\+\.git" ... url na vylistovani objektu grupy\\ |
| |
| | ====Scenare==== |
| | ==procisteni .git adresare== |
| | Zdroj: [[https://stackoverflow.com/questions/5613345/how-to-shrink-the-git-folder]]:\\ |
| | ``` |
| | git clone remote-url |
| | for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do |
| | git branch --track ${branch##*/} $branch |
| | done |
| | |
| | #!/bin/bash |
| | #set -x |
| | |
| | # Shows you the largest objects in your repo's pack file. |
| | # Written for osx. |
| | # |
| | # @see http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/ |
| | # @author Antony Stubbs |
| | |
| | # set the internal field spereator to line break, so that we can iterate easily over the verify-pack output |
| | IFS=$'\n'; |
| | |
| | # list all objects including their size, sort by size, take top 10 |
| | objects=`git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head` |
| | |
| | echo "All sizes are in kB. The pack column is the size of the object, compressed, inside the pack file." |
| | |
| | output="size,pack,SHA,location" |
| | for y in $objects |
| | do |
| | # extract the size in bytes |
| | size=$((`echo $y | cut -f 5 -d ' '`/1024)) |
| | # extract the compressed size in bytes |
| | compressedSize=$((`echo $y | cut -f 6 -d ' '`/1024)) |
| | # extract the SHA |
| | sha=`echo $y | cut -f 1 -d ' '` |
| | # find the objects location in the repository tree |
| | other=`git rev-list --all --objects | grep $sha` |
| | #lineBreak=`echo -e "\n"` |
| | output="${output}\n${size},${compressedSize},${other}" |
| | done |
| | |
| | echo -e $output | column -t -s ', ' |
| | |
| | git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch filename' --prune-empty -f -- --all |
| | |
| | rm -rf .git/refs/original/ |
| | |
| | git reflog expire --expire=now --all |
| | |
| | git gc --prune=now |
| | |
| | git gc --aggressive --prune=now |
| | git push origin --force --all |
| | git push origin --force --tags |
| | ``` |
| |