Uživatelské nástroje

Nástroje pro tento web


navody:git

Git

Git je distribuovaný systém správy verzí, který vytvořil Linus Torvalds pro Linuxové jádro.

Příklady

Add

přidá soubory, které se commitnou

git add <soubor>

přidá všechny hlídané změněné soubory

git add -u

Branch

zobrazí existující větve

git branch

zobrazí vzdálené i lokální větve

git branch -a

zobrazí pouze vzdálené větve

git branch -r

smaže lokální větev

git branch -D <větev>

přejmenuje aktuální větev

git branch -m <nový_název>

nastaví upstream k větvi devel na origin/devel

git branch --set-upstream-to=origin/devel devel

zobrazí podrobné informace o větvích včetně upstream

git branch -vv

Clone

naklonuje vzdálený repozitář

git clone <repozitář>

Commit

oprava posledního commitu

git commit -m 'initial commit'
git add forgotten_file
git commit --amend

Config

nastaví jméno uživatele

git config --global user.name "<Jméno Příjmení>"

nastaví e-mail uživatele

git config --global user.email <emailová@adresa>

nastaví defaultní editor na nano

git config --global core.editor nano

nastaví defaultní chování git push

  • nothing - nic nepushne
  • matching - pushne všechny větve, které mají stejné názvy na obou stranách
  • upstream - pushne aktuální větev do její upstream větve
  • simple - jako upstream, ale pushne jen v případě, že se větve jmenují stejně
  • current - pushne aktuální větev do vzdálené větve se stejným jménem
git config --global push.default <typ např. simple>

nastaví diff tool a merge tool na kdiff3

git config --global diff.tool kdiff3
git config --global merge.tool kdiff3

vypíše URL vzdáleného repozitáře

git config --get remote.origin.url

nastaví vlastní certifikační autoritu

git config --global http.sslCAInfo /cesta/k/cert.pem

Diff

zobrazí soubory, které se změnily od posledního commitu

git diff --name-only

vynechá řádky, které se liší bílými znaky na konci a zobrazuje pouze změněné řádky bez okolních

git diff --ignore-space-at-eol -U0

Difftool

zobrazí rozdíly v souboru mezi lokální verzí a vzdálenou verzí ve větvi master

git difftool master origin/master <soubor>

Format-patch

na stdout vytiskne patch z předchozího commitu do aktuálního

git format-patch HEAD~1 --stdout

Grep

hledá <výraz> ve všech souborech ve všech verzích

git rev-list --all | xargs git grep <výraz>

Checkout

přepnutí na existující větev

git checkout <větev>

přepnutí na větev, která se vytvoří

git checkout -b <nová větev>

vytvoří novou větev se sledování vzdálené větve

git checkout --track <vzdálený server>/<větev>

zruší necommitlé změny v souboru

git checkout -- <soubor>

přidá soubor z jiné větve do větve aktuální

git checkout <větev> <soubor>

Init

Vytvoří prázdný repozitář gitu

git init

vytvoří prázdný repozitář bez bez pracovního adresáře (pro serverovou část)

git init --bare

Log

zobrazí historii projektu

git log

zobrazí poslední dva commity i s rozdílama

git log -p -2

zobrazí pro každý commit jednoduchou statistiku

git log --stat

zobrazí každý commit na jeden řádek

git log --pretty=oneline

zobrazí historii větví formou ASCII grafu

git log --graph

zobrazí commity a změněné soubory

git log --name-status --oneline

zobrazí přehledný obarvený graf s relativním stářím commitů

git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all

zobrazí historii souboru i s rozdílama

git log -p <soubor>

zobrazí commity, kde se nachází výraz ve změnách

git log -S <výraz>

Ls-files

vypíše soubory v gitu

git ls-files

vypíše počet řádků v souborech kontrolovaných gitem

git ls-files | xargs wc -l

Merge

do stávající větve připojí <větev>

git merge <větev>

Pull

začlení vzdálenou větev do větve lokální

git pull

Push

odešle data na server

git push

pokud na serveru ještě neexistuje větev, tak ji tam pošle

git push <jméno serveru> <větev>

nastaví aktuální větvi jako korespondující vzdálenou větev master

git push --set-upstream origin master

smaže vzdálenou větev

git push origin --delete <větev>

Reset

odebere soubory, které se mají commitnout

git reset <soubor>

zruší poslední commit

git reset --soft HEAD^

vrátí všechny soubory do posledního commitlého stavu

git reset --hard

Remote

přidá vzdálený repozitář na github

git remote add origin git@github.com:<uživatel>/<repozitář>

nastaví url adresu vzdáleného repozitáře

git remote set-url origin git@github.com:<uživatel>/<repozitář>

vytvoření vzdáleného repozitáře z lokálního přes ssh

# na serveru
mkdir /<cesta>/project.git
cd /<cesta>/project.git
git init --bare
# na klientovi
git remote add origin ssh://<uživatel>@<server>/<cesta>/project.git
git push origin master
# nastaví upstream větev(vhodne pro push.default upstream nebo simple)
git push --set-upstream origin master

zobrazí informace o vzdáleném adresáři

git remote show origin

zobrazí url vzdáleného repozitáře

git remote get-url origin

přejmenuje origin na mainstream

git remote rename origin mainstream

Rm

odebere soubor ze sledovaných gitem

git rm --cached <soubor>

odebere všechny adresáře

git rm --cached -r --ignore-unmatch adresar/**

Rev-list

vypíše hashe pro verze od 1. 6. 2016

git rev-list --all --after=2016-06-01

Show

zobrazí soubor z předposledního commitu

git show HEAD~1:<soubor>

vypíše text souboru z daného commitu se zalomenými řádky

GIT_PAGER='' git show <hash>:<soubor>

Stash

pokud existují necommitlé změny, které chceme uchovat přesto chceme zavolat pull je možné zavolat příkaz stash, který sková aktuální změny

git stash
git pull
git stash pop

pokud chceme zavolat commit v jiné větvi (třeba devel) než aktuální, je možné využít stash

git stash
git checkout devel
git stash pop

Status

Zobrazí co se bude commitovat co ne a další informace

git status

zobrazí soubory, které nejsou přidané

git status -u

zobrazí soubory, které se ignorují

git status --ignored

Tag

zobrazí všechny tagy

git tag

vytvoří tag v1.1 s popisem verze 1.1

git tag -a v1.1 -m 'verze 1.1'

smaže tag v1.1

git tag -d v1.1

pokud tag v1.1 existuje, tak ho přesune

git tag -fa v1.1

.gitignore

soubor, který určuje, které soubory git ignoruje

ignoruje všechny soubory kromě *.py (nevztahuje se na ui_*.py) *.ui Makefile, *.png soubory v adresáři images a přidá adresář src se všema podadresářema

*

!*.py
!*.ui
!Makefile
!images/
!images/*.png
!src/
!src/**/
# komentar
ui_*.py
navody/git.txt · Poslední úprava: 2020/12/01 10:36 autor: jules