Jak ukládat Arduino projekty do GitHub

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 Storage Data Flow
Znázornění toku dat při verzování pomocí GIT
  • 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

  1. Nainstalování GIT
  2. Vytvoření přístupového SSH klíče
  3. Vložení SSH klíče do správce klíčů
  4. Přidání SSH klíče k účtu na GitHub
  5. Otestování SSH spojení
  6. Nastavení uživatele a e-mailové adresy pro commity
  7. Vytvoření repozitáře na GitHub
  8. Propojení GitHub repozitáře se složkou v PC
  9. 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

Vložení nového SSH klíče do GitHub
Vložení nového SSH klíče do GitHub

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íč.

Vložení nového SSH klíče do GitHub
Vložení nového SSH klíče do GitHub

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.

Vytvoření nového repozitáře
Vytvoření nového repozitáře

Dokud je repozitář prázdný, GitHub nám ukazuje instrukce, co máme dělat.

Instrukce v prázdném repozitáři
Instrukce v prázdném repozitáři

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.

Vytvořená skrytá složka .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.

  1. Oddělte předmět od těla prázdným řádkem
  2. Omezte délku předmětu na 50 znaků
  3. Řádek předmětu začněte velkým písmenem
  4. Neukončujte předmět tečkou
  5. V řádku předmětu použijte rozkazovací způsob
  6. Řádky těla zprávy ukončujte po 72 znacích
  7. 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