Občas vytvořím nějaký kód. Jak postupně do kódu přidávám funkce, stává se mi, že kód přestane fungovat. Hledání chyby bývá obtížné a návrat k předchozí funkční verzi je většinou nemožný. Předcházet tomuto problému je ale poměrně jednoduché – začít používat software pro správu verzí. Tím je například nejznámější GIT. Dlouho jsem se tohoto software „bál“. Sice všichni píšou, jak je to snadné, ale v každém návodu je jenom kousek toho, co potřebujte (nebo si musíte přečíst knihu).
Článek je určen úplným nováčkům, kteří sice tuší, co GIT je, ale ještě neví, jak to vše postupně nastavit a propojit. Popisuji, jak spárovat složku v počítači se vzdáleným adresářem na GitHub. Vysvětluji variantu, kdy na projektu pracuji sám a nepotřebuji hlídat změny, které provedou jiní uživatelé.
Několik pojmů do začátku
Nejprve uvedu jedno grafické znázornění funkce jednotlivých git příkazů.
- GIT je systém pro správu verzí souborů, nejčastěji programových kódů. Slouží jako úložiště všech dřívějších verzí kódu. Umožňuje prohlížení a porovnávání rozdílů mezi jednotlivými verzemi kódu a v případě potřeby usnadní obnovení předchozích verzí. GIT může být nainstalován pouze lokálně (na vašem počítači) a nemusí mít připojený žádný vzdálený repozitář.
- GitHub je webová služba, na které vývojáři sdílejí svoje open-source kódy. Umožňuje spolupráci více lidí na jednom projektu.
- Commit je uložená verze kódu. Co commit, to verze. Lepší je vytvářet „hodně malých commitů“.
Při odesílání souborů na GitHub si dejte pozor na soubory, ve kterých máte uložená přístupová hesla. Nesdílejte citlivé údaje s ostatními.
Shrnutí postupu
- Nainstalování GIT
- Vytvoření přístupového SSH klíče
- Vložení SSH klíče do správce klíčů
- Přidání SSH klíče k účtu na GitHub
- Otestování SSH spojení
- Nastavení uživatele a e-mailové adresy pro commity
- Vytvoření repozitáře na GitHub
- Propojení GitHub repozitáře se složkou v PC
- Odeslání souborů na GitHub
Nainstalování GIT
Spusťte terminál, aktualizujte repozitáře balíků a nainstalujte poslední stabilní verzi
sudo apt-get update sudo apt-get upgrade sudo apt-get install git
Vytvoření přístupového SSH klíče
V terminálu pomocí příkazu ssh-keygen vygenerujeme přístupový klíč. Vložená e-mailová adresa slouží jako štítek nového klíče.
ssh-keygen -t rsa -b 4096 -C "tatageek.blog@gmail.com"
Po zobrazení výzvy „Enter a file in which to save the key“, stiskneme klávesu Enter. Tím je přijato výchozí umístění souboru. Dále zadáme přístupové heslo, opětovným zadáním ověříme jeho správnost.
V terminálu uvidíme něco takového:
uživatel@počítač:~$ ssh-keygen -t rsa -b 4096 -C "tatageek.blog@gmail.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/uživatel/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/uživatel/.ssh/id_rsa. Your public key has been saved in /home/užiavtel/.ssh/id_rsa.pub. The key fingerprint is: SHA256:BlaBlaBla,BlaBlaBla,BlaBlaBla tatageek.blog@gmail.com The key's randomart image is: +---[RSA 4096]----+ |Bla Bla Bla | |Bla Bla Bla | | ... | +----[SHA256]-----+
Vložení SSH klíče do správce klíčů
V terminálu spustíme ssh-agent na pozadí a vložíme ssh klíč
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
V terminálu uvidíme něco takového:
uživatel@počítač:~$ eval "$(ssh-agent -s)" Agent pid 5542 uživatel@počítač:~$ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/uživatel/.ssh/id_rsa: Identity added: /home/uživatel/.ssh/id_rsa (tatageek.blog@gmail.com)
Přidání SSH klíče k účtu na GitHub
V terminálu nainstalujeme xclip, zkopírujeme obsah souboru s SSH klíčem a ten pak vložíme na stránkách GitHub.
V terminálu napíšeme následující příkazy nebo otevřeme skrytou složku .ssh, v textovém editoru otevřeme soubor id_rsa.pub a jeho obsah zkopírujeme. Při kopírování nepřidáváme žádné nové řádky nebo mezery.
sudo apt-get install xclip xclip -sel clip < ~/.ssh/id_rsa.pub
Pokud nemáme účet na GitHub, nejprve ho vytvoříme.
V internetovém prohlížeči otevřeme adresu www.github.com/settings/keys nebo klikneme na náš avatar > Settings > SSH and GPG keys > New SSH key
V poli „Title“ pojmenujeme náš nový klíč. Pokud ke GitHub přistupujeme z více zařízení, poznáme podle popisku, ke kterému zařízení, který klíč patří. Do pole „Key“ vložíme zkopírovaný klíč.
Stiskneme tlačítko Add SSH key a zadání potvrdíme přihlašovacím heslem k našemu GitHub účtu.
Otestování SSH spojení
V terminálu napíšeme
ssh -T git@github.com
Upozornění, zda se opravdu chceme přihlásit potvrdíme v terminálu napsáním
yes
V terminálu uvidíme něco takového:
uživatel@počítač:~$ ssh -T git@github.com The authenticity of host 'github.com (140.82.118.4)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'github.com,140.82.118.4' (RSA) to the list of known hosts. Hi TataGEEK! You've successfully authenticated, but GitHub does not provide shell access.
Mně se vše povedlo bez problémů, ale prý jsou docela časté následující 2 chybové hlášení. Tak pokud se objeví, můžete použít tyto odkazy.
Nastavení uživatele a e-mailové adresy pro commity
Pomocí git config nastavíme uživatelské jméno a e-mailouvou adresu, která bude viditelná u všech našich commitů. Uživatelské jméno a e-mailovou adresu nahraďte vlastními parametry.
git config --global user.name "TataGEEK" git config --global user.email tatageek.blog@gmail.com
Vytvoření repozitáře na GitHub
Přejdeme na stránku https://github.com/new a vytvoříme nový repozitář. Zadáme název repozitáře, stručný popis a klikneme na tlačítko Create repository.
Dokud je repozitář prázdný, GitHub nám ukazuje instrukce, co máme dělat.
Propojení GitHub repozitáře se složkou v PC
Nejprve v terminálu otevřeme složku s naším Arduino projektem, který chceme s GitHub propojit, následně v ní zadáme příkaz git init. Inicializace v otevřené složce vytvoří skrytou složku .git.
cd /home/uživatel/cesta_ke_složce git init
V terminálu uvidíme něco takového:
uživatel@počítač:~$ cd /home/uživatel/Arduino/RC-car/ uživatel@počítač:~/Arduino/RC-car$ git init Initialized empty Git repository in /home/uživatel/Arduino/RC-car/.git/ uživatel@počítač:~/Arduino/RC-car$
Následně přidáme nový vzdálený repozitář. V příkazu zvolíme zkrácený název, přes který se na repozitář budeme odkazovat
git remote add rccar git@github.com:TataGEEK/BLE-RC-car-control.git
Odeslání souborů na GitHub
V terminálu otevřeme náš adresář s projektem.
uživatel@počítač:~$ cd /home/uživatel/Arduino/RC-car/
Vybereme soubory, které chceme commitnout = odeslat. Pokud chceme odeslat všechny soubory, v terminálu napíšeme git add mezera tečka.
git add .
V terminálu uvidíme něco takového:
uživatel@počítač:~/Arduino/RC-car$ git add .
Nyní už můžeme commitnout soubory. Napíšeme příkaz git commit včetně zprávy o tom, co jsme změnili. Jsou 2 možnosti, jak to udělat. Pokud píšeme krátkou zprávu, použijeme parametr -m“text zprávy“
git commit -m "Stručně popíšeme, co jsme změnili"
Pokud chceme napsat delší, víceřádkový text, napíšeme pouze git commit a text napíšeme v textovém editoru. Takto máme zaznamenanou verzi, ke které se můžeme později vrátit.
V terminálu uvidíme něco takového:
uživatel@počítač:~/Arduino/RC-car$ git commit [master (root-commit) 1a4d2f6] prvni vytvoreni repozitare 7 files changed, 1858 insertions(+) create mode 100644 BLE-client/BLE-client.ino create mode 100644 BLE-server/BLE-server.ino create mode 100644 BLE-server/MPU9250.cpp create mode 100644 BLE-server/MPU9250.h create mode 100644 BLE-server/quaternionFilters.cpp create mode 100644 BLE-server/quaternionFilters.h create mode 100644 BLE-server/sensor.h
7 tipů pro psaní dobrých commit zpráv:
Celý anglický text naleznete na tomto odkazu.
- Oddělte předmět od těla prázdným řádkem
- Omezte délku předmětu na 50 znaků
- Řádek předmětu začněte velkým písmenem
- Neukončujte předmět tečkou
- V řádku předmětu použijte rozkazovací způsob
- Řádky těla zprávy ukončujte po 72 znacích
- V těle zprávy vysvětlete, co a proč se změnilo (nepište, jak se to změnilo)
Pokud je náš projekt ve stavu, kdy ho chceme sdílet s ostatními, použijeme příkaz git push.
git push -u rccar master
V terminálu uvidíme něco takového:
uživatel@počítač:~/Arduino/RC-car$ git push -u rccar master Enumerating objects: 11, done. Counting objects: 100% (11/11), done. Delta compression using up to 4 threads Compressing objects: 100% (10/10), done. Writing objects: 100% (11/11), 21.09 KiB | 4.22 MiB/s, done. Total 11 (delta 0), reused 0 (delta 0) To github.com:TataGEEK/BLE-RC-car-control.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'rccar'.
Odkazy
- Kniha Pro Git zdarma v PDF
- Částečně přeložená kniha Pro Git v HTML
- Přednáška o Git na YouTube
- I když nebudete používat všechny GIT příkazy, vytiskněte si nějaký GIT CheatSheet. Časem se určitě bude hodit.
- Jednoduchá vysvětlení složitějších příkazů
- Naučte se GIT zábavnou formou, vyzkoušejte hru Oh My Git!