pwd
— vypíš aktuálny adresárcd folder
— zmeň aktuálny adresár na folder
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex # inštalácia scoopu
scoop install git # inštalácia gitu
git config
. Tieto údaje bude Git používať na priradenie autora k verzii.git config --global user.name "Tibor Stanko"
git config --global user.email "[email protected]"
main
(o vetvách si povieme viac neskôr)git init
slúži na vytvorenie Git repozitára v aktuálnom adresári:git status
:Uloženie verzie prebieha v dvoch krokoch.
git add
označíme zmeny ktoré majú byť pridané do novej verzie:git commit
vytvoríme záznam o novej verzii:-m "commit message"
-m
vynecháme. git commit
vtedy otvorí textový editor v ktorom popis napíšeme.vim
, ktorý beží priamo v termináli. Ak nemáte skúsenosti s používaním vimu, môžete si editor zmeniť:Neflákajte písanie commit messages!
Niektoré systémy na kontrolu verzií fungujú tak že vytvoria novú verziu zo všetkých aktuálnych súborov v repozitári. Tento spôsob ukladania záloh môže byť nevýhodný. Príkladom je situácia keď sme v repozitári implementovali dve nezávislé funkcie, a chceme ich zachytiť v dvoch rozdielnych verziách. V Gite preto existuje koncept prípravnej zóny (staging area), vďaka ktorej máme kontrolu nad tým ktoré zmeny budú a ktoré nebudú pridané do nasledujúcej verzie.
git status
:git log
sa môžeme presvedčiť o tom že záznam (commit) bol vytvorený:commit bf5c9b4a320012b422546fcb86f5b957104bea55 (HEAD -> main)
Author: Tibor Stanko <[email protected]>
Date: Tue Sep 13 17:00:00 2022 +0200
Add hello.py
git reset [file]
odstránime súbor z prípravnej zóny bez straty zmien v súboregit reset [file]
odstránime súbor z prípravnej zóny bez straty zmien v súborezoo
zoo
Git repozitártest.txt
s ľubovoľným obsahomtest.txt
do ďalšej verzie a ulož jugit log
Tip: nezabudni počas práce používať git status
na zistenie aktuálneho stavu repozitára.
Vetvy slúžia na vybočenie z hlavnej línie a pokračovanie v práci bez zásahu do nej
Vetvenie je silnou stránkou Gitu — prepínanie medzi vetvami je rýchle, čo umožňuje časté vytváranie nových vetiev
Doteraz sme pracovali na vetve main
, ktorú automaticky vytvoril git init
Zoznam vetiev si môžeme pozrieť cez príkaz git branch
:
V Gite je prednastavená hlavná vetva master
. Tento názov sa v posledných rokoch stal kontroverzným a postupne sa prestáva používať. Preto sme pri nastavovaní Gitu zmenili init.defaultBranch
na main
.
rewrite/improve second bullet
french
zavolámeslovak
do hlavnej vetvy main
, prepneme sa najprv na hlavnú vetvu:git merge
:>> git merge french
Auto-merging hello.py
CONFLICT (content): Merge conflict in hello.py
Automatic merge failed; fix conflicts and then commit the result.
git branch --delete
, skrátene git branch -d
.Po vymazaní je vetva odstránená z histórie a nie je možné ju obnoviť.
git log
histórieadd mermaid diagram for this git log output
animals
zoo.txt
s nasledovným obsahom:zoo.txt
animals
do vetvy main
a vymaž vetvu animals
tiger
zmeň riadok lev
na tiger
a ulož novú verziumain
, oprav riadok zirafa
na žirafa
a ulož novú verziutiger
s vetvou main
Doteraz sme pracovali s lokálnym Git repozitárom ktorý je uložený na našom počítači
Vzdialený repozitár (remote) je uložený na Internete — presnejšie, na webovom serveri
napr. github.com, firemný server, univerzitný server, …
git remote add <name> <url>
:name
bude Git používať ako meno vzdialeného repozitára na adrese url
. Meno môže byť ľubovoľné; bežne sa stretneme s menom origin
.git push <remote> <branch>
“pretlačí” lokálne zmeny z vetvy branch
do vzdialeného repozitára remote
:git push
je potrebné pridať argument -u
:-u
alebo --set-upstream
nastaví predvolenú remote vetvu (origin/main
) pre aktuálnu lokálnu vetvu (main
)
ak remote vetva origin/main
neexistuje, git push
ju automaticky vytvorí
git push
git push
git branch -a
vypíše zoznam všetkých vetiev, lokálnych aj vzdialených-a
je skratka pre --all
*
označuje aktuálnu vetvu:To https://github.com/bbrrck/zoo.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/bbrrck/zoo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
git fetch
stiahneme zoznam zmien z remote vetvy:git merge
:git pull
, ktorý je kombináciou git fetch
a git merge
:git clone
:remote_url
v adresári local_folder
zoo
.main
na remote.zoo.txt
za meno každého zvieraťa jeho emoji: 🐼🐘🐯🦒zoo.txt
nový riadok krokodíl 🐊
a ulož novú verziu.zoo.txt
nový riadok gorila 🦍
a ulož novú verziu..gitignore
git <command> --help
git diff
git cat-file -p
git restore
git add --interactive
git log
git stash
git blame
git revert
Príkaz git revert
vytvorí novú verziu, a nemení históriu repozitára.
git reset
Príkaz git reset
mení históriu repozitára a môže spôsobiť stratu súborov.
README.md
ktorý Github automaticky vyrenderujeREADME
súborov: matiassingers/awesome-readmeAj tieto slidy boli vytvorené s použitím Markdownu! (pomocou systému Quarto)
# Markdown is Awesome Markdown is very simple and versatile. This is a Markdown paragraph. This is still the same paragraph. ## Formmatting options Bulleted list: - *italic* - **bold** - ***bold and italic*** - ~~strikethrough~~ - [link](https://www.markdownguide.org/) - `code` Numbered list: 1. first item 2. second item 3. last item
Markdown is very simple and versatile.
This is a Markdown paragraph. This is still the same paragraph.
Bulleted list:
code
Numbered list:
### Code blocks ```python def main(): print("hello!") if __name__ == "__main__": main() ``` ### Images ![Queen Elizabeth II](https://upload.wikimedia.org/wikipedia/commons/1/11/Queen_Elizabeth_II_official_portrait_for_1959_tour_%28retouched%29_%28cropped%29_%283-to-4_aspect_ratio%29.jpg) ### Blockquotes > It’s worth remembering that it is often the small steps, not the giant leaps, that bring about the most lasting change.
en | sk |
---|---|
branch | vetva |
clone | naklonovanie repozitára |
commit | záznam |
commit message | popis záznamu |
conflict | konflikt medzi verziami |
conflict resolution | riešenie konfliktov |
diff | rozdiel medzi verziami |
merge | zlúčenie vetiev |
en | sk |
---|---|
pull | stiahnutie vzdialených zmien |
push | odoslanie lokálnych zmien |
repository | repozitár, úložisko |
remote | vzdialený repozitár |
snapshot | snímka |
staging area | prípravná oblasť (tiež index) |
status | stav repozitára |
version | verzia |