Pro nastavování a další záležitosti bude tento návod využívat pouze variantu git bash.
Autor
Autor commitu je dán buď explicitně při commitování přepínačem "--author" (zde vynecháme) nebo ho lze určit lokálně pro celý repozitář, případně globálně pro celý váš PC. Budeme se zabývat jen druhým způsobem, kdy nastavíme implicitního autora globálně pro váš počítač. Potřeba nastavovat autora lokálně vyvstává v momentě, kdy například pracujete na více projektech pro jiné subjekty a potřebujete mít všude jiný identifikátor a e-mail, a tak podobně.
Autor má dvě "složky" - jméno a email. E-mail nastavíme na ten, který jste si např. registrovali na GitHubu. Jméno taktéž použijeme buď vlastní, nebo přezdívku z GitHubu:
Kód: Vybrat vše
git config --global user.name "MojeJmeno"
git config --global user.email "mujemail@seznam.cz"
Pokud se rozhodnete uvádět autora přímo při commitování, což se může hodit, pokud nahráváte něčí patch, jehož nejste autorem, lze použít přepínač při commitování:
Kód: Vybrat vše
git commit ... -s --author="PravyAutor <mailautora@atlas.cz>"
Správa a přidávání souborů
Jak jsem psal již v guide jinde, soubory se dají přidat příkazem "git add" buď hromadně (hvězdička), nebo po jednom. Ani jeden způsob není úplně ideální - "git add *" vám může přidat do repozitáře i věci, které nechcete, aby tam byly (dočasné soubory, konfigurace, ..), a přidávání po jednom zase bude trvat hrozně dlouho.
Pro začátek mějme přehled, co do repozitáře NEpatří:
- konfigurační soubory (config.php, ..) (neplatí pro jejich předlohy, kde nejsou vyplněné položky)
- dočasné soubory a cache
- dynamicky generovaný obsah uživateli (avatary, obrázky v tématech, uploadované soubory, ..)
Jak tedy přidávat správně soubory? Vyčleňme si cesty, které obsahují výše zmíněné soubory a ty přidávat nebudeme. Abychom si byli jisti, že do repozitáře budeme přidávat jen to, co tam chceme, postupujme po jednotlivých podsložkách (a podpodsložkách, ...) a přidávejme hromadně jejich obsah. Pokud se v nějaké složce vyskytuje více souborů a jeden z nich je config, nezbývá, než přidat buď všechny po jednom, nebo přidat hromadně všechny a pak jeden konkrétní soubor opět "vyndat" (k tomu níže), nebo použít .gitignore (také níže). Také je možné přidávat po příponách. Například téměř vždy u C++ projektů chceme přidat všechny zdrojové soubory s příponou .cpp.
Můžeme proto přidávat soubory a složky tímto stylem:
Kód: Vybrat vše
git add assets/*
git add app/models/* app/controllers/*
git add *.cpp
git add app/bootstrap.php
Kód: Vybrat vše
git reset -- config.php
Pro kontrolu je silně doporučeno zkontrolovat, zda jsme přidali všechny soubory co chceme, zda jsme nepřidali něco ze souborů, co v repozitáři nemají co dělat, a zda je vše v pořádku. Toho lze docílit příkazem:
Kód: Vybrat vše
git status
.gitignore a složky pro dynamický obsah
V git repozitářích existují speciální soubory, který mají určitý význam pro správu repozitáře. Pro teď je důležitý soubor s názvem ".gitignore". Na začátku má tečku, a to z důvodu, že soubory začínající tečkou jsou na unixových systémech považovány za "skryté" (analogie ke skrytým souborům z Windows a jeho souborových systémů). Ve Windows se bude tento soubor pravděpodobně chovat jako soubor beze jména s příponou "gitignore", ale instalační program gitu vám pravděpodobně tyto "přípony" asocioval s textovým editorem.
Soubor .gitignore se může nacházet kdekoliv v projektu i na několika místech. Obsahuje po řádcích oddělený seznam souborů a cest, které se mají úplně ignorovat při správě repozitáře (git add, git status, ...). Můžeme proto v kořenovém adresáři repozitáře například vytvořit jeden takový gitignore a naplnit ho ignorováním konfiguračních souborů, a například všech souborů s příponou .env:
Kód: Vybrat vše
app/config.php
app/config.db.php
*.env
Pro složky s dynamicky generovaným obsahem (cache, uploads, ..) lze vkládat přímo do nich soubor .gitignore s následujícím obsahem:
Kód: Vybrat vše
*
!.gitignore
Commit note
Commit note je další velmi důležitou částí commitu a všude mohou být jiné požadavky, co tam vlastně psát. Vždy je ale nutné napsat, co jste vlastně v tomto commitu upravili. Dále v rámci iCe Online budeme používat angličtinu.
Zásady lze shrnout bodově:
- jednoznačná stručná poznámka o tom, co se v commitu změnilo
- jednojazyčně (u nás angličtina)
- obsahuje pouze základní ASCII znaky (tedy vynechme háčky a čárky, UTF-8 speciality, emoji, ..)
- neobsahuje smajlíky ani jiné prvky typicky chatové konverzace
- vše by se mělo vejít do 80 znaků (pokud ne, svět se nezboří, ale snažme se dodržet)
- není zase zbytečně stručná (např. oblíbená commit note "fix", "repair", "files" nebo "small change")
- pokud to repozitář vyžaduje, uvádějme i modul, ve kterém ke změně došlo (bude popsáno v samostatném příspěvku)