git:quickstart
Obsah
QUICKSTART / VSEHOCHUT
.GITIGNORE
ignorovani preskakovani podle souboru .gitignore v root repa ignoruje soubory
/.htaccess /vendor/ /temp/cache/ *.png *.jpg
NASTAVENI DEFAULT JMENA
$ git config --global user.name "name" $ git config --global user.email "name" $ git config --global color.ui true
NASTAVENI DEFAULT VETVE
$ git push --set-upstream NAS moduly
LOG
$ git status $ git log
ADD
stage new files,changes/deletions
$ git add <soubor/y/bash nahrazeni> $ git interactive # loop kde se pta na jednotlive soubory
COMMIT
$ git add <file>|--all|*\.cpp $ git commit [-m "message"]
Re-push amended commitu [se zachovanim historie]:
... $ git commit -amend $ git pull # manualy merge if needed $ git push
UPLOAD
bundle archiv
$ git bundle create /file/name --all
$ git archive [--remote=<repo>] --format zip --output /full/path/to/zipfile.zip master $ git archive master | bzip2 >source-tree.tar.bz2
zkopirovani jinam,nezkomprimovane
$ git archive [--remote=<repo>] master | tar -x -C /somewhere/else
VRACENI MINULOSTI SOUBORU
pro jednoho
$ git checkout [commit nebo nic pro posledni] -- cesta/k/souboru
zpet commit
jeden
$ git revert [commit]
vice
$ git revert --no-commit D $ git revert --no-commit C $ git revert --no-commit B $ git commit [-m 'the commit message']
odstraneni souboru z minuleho commitu
necha soubor na disku jak je
$ git reset HEAD^ cesta/k/souboru
BRANCH
branching == vetveni
vypis
$ git branch
vypis zmergovani do aktualni - bez hvezdicky jsou nepouzivane,uz pretazene
$ git branch --merged
vypis jeste nezmergovanych
$ git branch --no-merged
vytvoreni nove+prepnuti
$ git checkout -b <nova vetev> $ git checkout -b <nova vetev> <server>/<vetev> $ git checkout --track <server>/<vetev> # nastavi na trackovani vzdalene vetve aktualni vetev
nebo
$ git branch <nova vetev> $ git checkout <nova vetev>
prepnuti
[automaticky zmeni soubory v pracovnim adresari,pokud chceme tahat mezi vetvemi # git pull ? ]
$ git checkout <vetev>
trackovani vetve i na origin
$ git push -u origin vetev
smazani
$ git branch -d <vetev> $ git push [remotename] :[branch] # maze vzdalene vetve, z nic udelej tohle a je to ?
TAG
Vice druhu:
- anotovany [ -a ]
- podepsany [ -s -u <soubor s klicem> ]
- bez infa -
lightweight[ zadna volba ]
vypis
$ git tag [ -l <hledany vyraz> ]
vytvoreni
na commit, staci jen 7 znaku ze sha1 commitu
$ [ GIT_COMMITTER_DATE="2014-04-14 14:26:00" ] git tag [-a|-s|-u] <tag,v0.1> <sha z commitu> [ -m "zprava" ]
odstraneni
$ git tag -d <jmeno>
a finalne
$ git push --tags NAS/master
DIFF
GUI pokud mame Kompare, Meld
$ git difftool
nebo
$ git diff [--staged]
MERGE
Je vice druhu:
- fast-forward [jen presune pointer]
- three-way diff [prvni,druhy,spolecny predek]
- manual - pokud vyse uvedene selzou
GUI pokud mame Kompare, Meld
$ git checkout <kam/vetsinou master> $ git mergetool <vetev>
a vybrat nebo
$ git checkout <kam/vetsinou master> $ git merge <vetev> $ git status
Sekce unmerged files, vklada do textu automaticky „zarazky“ a rucne
PATCH
vyhazi soubory .patch od kazdeho commitu
$ git format-patch <tag>
ADD ORIGIN [CENTRAL COPY]
pridani vzdaleneho
$ git remote add origin git@git.sh.cvut.cz:repo.git $ git remote -v
UPDATE ORIGIN [CENTRAL COPY]
stahne zmeny
$ git fetch <jmeno,origin|NAS>
nahraje zmeny
$ git push <remotename,origin|NAS> <vetev> $ git push [remotename] [localbranch]:[remotebranch] # to same akorat na serveru je jine jmeno vetve
git/quickstart.txt · Poslední úprava: 2016/04/13 16:10 autor: 127.0.0.1