Git repozitář

GitLab repozitář

Po začátku semestru se všem studentům v předmětu vytvoří repozitář ve fakultním GitLabu. V tomto repozitáři se budou objevovat kostry cvičení, stejně jako kostry domácích úkolů.

Pro udělení přístupu musíte mít v GitLabu vytvořený účet.
Účet se vytvoří při prvním příhlášení. Zadejte fakultní login (tvaru xprijmeni nebo xuco) a fakultní heslo.

Pravidla

Ve výuce používame automatizační skripty, které očekávaní příčetnou práci s repozitářem.

Porušení těchto pravidel může způsobit technické problémy na straně automatizace a bude penalizováno 5 body.
  • Je zakázáno měnit historii ve větvi main.

    V této větvi nepoužívejte git commit --amend ani git rebase.

  • Je zakázáno upravovat větev seminars a větve tvaru hw‹N›/0.

    GitLab by měl těmto změnám zabránit, ale přesto dávejte pozor.

  • Maximální povolená velikost repozitáře je 15 MB.

    Nenahrávejte do repozitáře zbytečné soubory, jako slidy z přednášek, videa a obrázky.

Nebojte se Git používat

I přes pravidla se nemusíte bát Git používat. Klidně si v repozitáři ukládejte kódy z cvičení, tak se naučíte Git používat lépe. Git má i několik vlastních ochran, které vám zabrání udělat chybu.

  • Používejte vždy git status a pečlivě čtěte výstup, zejména zda jste ve správné větvi (hw‹N›/a, hw‹N›/b pro domácí úkoly, main pro ostatní).

  • Vyhněte se příkazům, které obsahují --force nebo -f. Pokud jste nalezli řešení s tímto přepínačem, raději nejdříve kontaktujte cvičící.

Postupy

Pro práci s repozitářem jej musíte nejdříve naklonovat na svoje zařízení. Můžete mít více klonů (třeba na Aise a na vlastním počítači), jen si dejte pozor, abyste si změny mezi klony správně propagovali.

Pokud si nastavíte SSH klíč, nebudete muset při práci s GitLabem zadávat heslo.

Stáhnutí repozitáře

  • Klon

    Pro stáhnutí repozitáře proveďte příkaz:

    $ git clone https://gitlab.fi.muni.cz/pb160/‹YEAR›/‹LOGIN›.git pb160

    Místo ‹YEAR› doplňte rok, místo ‹LOGIN› doplňte svůj fakultní login (xprijmeni nebo xuco).

  • Konfigurace

    Nastavte si svůj e-mail a jméno.

    $ cd pb160
    $ git config user.email '‹LOGIN›@fi.muni.cz'
    $ git config user.name '‹FIRST NAME› ‹LAST NAME›'

    K příkazům můžete přidat přepínač --global. Nastavení se pak použijí pro všechny vaše repozitáře, pokud je v projektu nezměníte.

  • Repozitář je připraven

Obecný postup pro práci s repozitářem

Kdykoliv chcete pracovat s repozitářem, je vhodné se naučit postup pro udržení konzistence mezi vaším klonem a GitLabem. Jinak se může stát, že nějakou práci zapomenete a způsobíte konflikt.

  • Zjistěte stav repozitáře

    V repozitáři pomocí příkazu git status ověřte, že jste ve větvi main a nemáte žádné rozpracované změny:

    $ git status
    On branch main
    Your branch is up to date with 'origin/main'.
    
    nothing to commit, working tree clean
    • Pokud v příkazu výše vidíte On branch hw‹N›/…, pak jste ve špatné větvi; použijte git switch main.

    • Pokud místo nothing to commit, working tree clean vidíte nějaké změnené soubory, pak tyto změny nahrajte nebo zrušte.

  • Aktualizujte repozitář

    Stáhněte si aktuální stav repozitáře:

    $ git pull

    Pokud příkaz selže, došlo ke konfliktu. Jazykové modely obvykle umí tyto problémy vyřešit snadno. Pokud si však nejste jisti nebo máte pocit, že vám model radí hlouposti, neváhejte napsat do fóra.

  • Můžete pracovat

    Postup pro práci na semináři nebo pro domácí úkol naleznete níže.

  • Vytvoření nové verze

    Do nové verze byste měli vložit pouze zdrojové soubory. Binární soubory, dočasné soubory a logy se obecně v repozitáři neuchovávají. Vizte taky seznam ignorovaných souborů .gitignore v kořeni repozitáře.

    • Seznam změněných souborů zjistíte příkazem git status.

    • Změnené nebo nové soubory přidejte do nové verze příkazem git add ‹FILE₁› ‹FILE₂›….

    • Novou verzi vytvořte příkazem git commit.

    Můžete vytvořit i víc než jednu verzi. Soubory ve stavu Untracked files, které do verze přidávat nechcete (třeba binární soubory nebo logy), smažte nebo nechte tak.

  • Ješte jědnou ověřte stav repozitáře

    Ověřte si příkazem git status, že nemáte žádné soubory ve stavu Changes not staged for commit nebo Changes to be committed. Taky si ověřte, že Untracked files se nevypíše, nebo obsahuje pouze dočasné soubory nebo binárky.

  • Uložte změny na GitLab

    Následující příkaz odešle aktuální větev na GitLab. Můžete přidat přepínač --all, pokud chcete odeslat všechny větve.

    $ git push
  • Hotovo

Práce na cvičení

  • Začátek: Vykonejte úvodní příkazy z obecného postupu

    Výše taky naleznete postup pro stáhnutí repozitáře, pokud jej ještě nemáte.

  • Pracujte ve větvi main

    Použijte git status; pokud chcete změnit větev, použijte git switch main.

  • Stáhněte si kostru

    Proveďte příkaz

    $ git merge --no-ff seminars
    • Pokud se otevře editor, pouze uložte automaticky vytvořenou zprávu a ukončete jej.

    • Pokud dojte k chybě, oslovte cvičící.

  • Můžete pracovat

    Kostra semináře se objeví v adresáři seminar-‹WEEK› pro daný týden.

  • Konec: Vykonejte finální příkazy z obecného postupu

Práce na domácím úkolu

Po zveřejnění části A úkolu N vznikne v repozitáři projektu větev hw‹N›/0, kterou nemodifikujte. Dále vznikne větev hw‹N›/a, ve které můžete pracovat.

Po zveřejnění části B neupravujte hw‹N›/a, ale pracujte nad větví hw‹N›/b, která vznikne automaticky. Tato větev bude obsahovat všechny změny z hw‹N›/a.

  • Začátek: Vykonejte úvodní příkazy z obecného postupu

  • Pracujte ve větvi hw‹N›/a nebo `hw‹N›/b

    Číslo úkolu dosaďte do ‹N›, třeba hw1/a nebo hw3/b. Použijte git status; pokud chcete změnit větev, použijte git switch hw‹n›/a nebo hw‹N›/b.

    Zde není třeba provádět git merge.

  • Můžete pracovat

    Kostra úkolu se objeví v adresáři hw‹N›.

  • Konec: Vykonejte finální příkazy z obecného postupu

Pokyny pro domácí úkoly

Odevzdání

  • Odevzdáním se rozumí git commit a git push z větve pro domácí úkol.

    Pro účely splnění časových omezení se rozumí právě tyto dvě operace. Pokud provedete git commit včas, a zapomenete git push nebo ho provedete pozdě, pak se to nepovažuje za včasné odevzdání. Používejte git status a pořádně čtěte výstup!

  • Nevytvářejte a neupravujte Merge Request!

    Hodnocení a zpětnou vazbu dostanete v Merge Request, kterou vytvoří automatický skript, pokud nalezne nějakou změnu v hw‹N›/a nebo hw‹N›/b. Tento Merge Request nezavírejte, neupravujte, ani neklikejte na Approve nebo Merge!

Odevzdání pro opravu kvality kódu

Pokud opravující žádá o opravu chyb, přidá do Merge Request komentáře, které začínají FIX:. Opravu provedete následujícím způsobem.

Nezavírejte ani nerušte existující Merge Request!
  • Úpravy provádějte ve větvi s řešením

    Pro část A použijte hw‹N›/a, ne hw‹N›/b. Nevytvářejte žádné další větve.

  • Proveďte opravu kódu

    Každou změnu můžete i nadále nahrávat do větve pomocí git push, GitLab stav existujícího MR automaticky aktualizuje.

  • Nerušte poznámky recenzentů

    GitLab umožňuje v Merge Request označit poznámky jako Finished. Nedělejte to, skripty opravu uznají pouze pokud opravu uzná opravující.

  • Požádejte o další kontrolu

    Když jste s opravou spokojeni, požádejte o novou kontrolu.

    • Vedle jména opravujících byste měli vidět ikonu , stačí na ní kliknout.

    • Někdy tuto ikonu však GitLab nezobrazí. V takovém případě stačí na kartě Overview napsat komentář, ve kterém opravující označte (@login) a nechte jim vzkaz, např.

      @xlacko1 I fixed all the problems. Please re-review this assignment.
Nebojte se diskutovat o opravě
Pokud poznámce v odevzdání nerozumíte, můžete k ní přidat komentář a doptat se. Pokud se i přes diskusi s opravujícími domníváte, že je oprava špatně, zeptejte se cvičících nebo napište na xlacko1@fi.muni.cz.

Opravující jsou s odevzdáním spokojení, co dál?

Nemusíte dělat nic.

Pokud máte OK z obou částí úkolu, skripty by měli Merge Request akceptovat. Pokud chcete, můžete si úkol zařadit do větve main.

Následující operace neprovádějte, pokud nemáte OK z obou částí úkolu

  • Začátek: Vykonejte úvodní příkazy z obecného postupu

  • Ověřte si, že Merge Request pro obě části je ve stavu Merged

    Pokud tomu tak není, nepokračujte, ale kontaktujte cvičící.

  • Pracujte ve větvi main

    Použijte příkazy git status a případně git switch main.

  • Zařaďte úkol do hlavní větve

    $ git merge --no-ff hw‹N›/0

    Za ‹N› dosaďte číslo úkolu. Pozor, není to hw‹N›/a ani hw‹N›/b, ale hw‹N›/0 (nula).

  • Konec: Vykonejte finální příkazy z obecného postupu

Tipy

  • Nepoužívejte git add --all!

    Tento přepínač přidá do repozitáře všechny soubory kromě těch v .gitignore. Protože však pravidla v tomto souboru nemusí být dokonalá, můžete omylem přidat i nechtěné soubory.

  • Nepoužívejte příkazy s -f nebo --force!

    Tyto přepínače obvykle vypnou některé ochrany Gitu. Pokud na takový příkaz narazíte a netušíte, co dělá, nepoužívejte ho a kontaktujte raději někoho zkušenějšího.

  • Před git commit pečlivě čtěte výstup git status!

    Pokud uděláte při git add chybu, Git napoví, jak ji opravit.

  • Špatný commit lze před git push ještě opravit.

    Podívejte se na manuál příkazu git reset. Pokud nevíte, co s tím, raději se zeptejte.

  • Velikost repozitáře lze odhadnout i před commitem.

    $ git gc --aggressive
    $ du -sh .git
  • Dávejte si pozor na Git v IDE.

    Některé nástroje v IDE jsou nepřehledné a mohou způsobit, že omylem něco v repozitáři pokazíte. Pečlivě čtěte všechna dialogová okna.

vygenerováno 2026-02-22 01:01 upravit