cs:git
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
cs:git [2019/09/01 01:54] – vytvořeno roman | cs:git [2022/01/17 15:42] (aktuální) – kaklik | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== | + | ====== |
Git je nástroj pro správu a verzování softwaru. Díky svým vlastnostem umožňuje a usnadňuje práci na jednom projektu pro více lidí. Git je nejefektivnější především pro textové soubory, kde umožňuje velmi snadno sledovat jejich změny. | Git je nástroj pro správu a verzování softwaru. Díky svým vlastnostem umožňuje a usnadňuje práci na jednom projektu pro více lidí. Git je nejefektivnější především pro textové soubory, kde umožňuje velmi snadno sledovat jejich změny. | ||
Řádek 8: | Řádek 7: | ||
Celý systém funguje tak, že uživatel po nějaké změně v repozitáři vytvoří commit, čímž tyto změny " | Celý systém funguje tak, že uživatel po nějaké změně v repozitáři vytvoří commit, čímž tyto změny " | ||
- | Například moduly stavebnice MLAB jsou uloženy také v jednom | + | Například moduly stavebnice MLAB jsou uloženy také v jednom |
====== Github ====== | ====== Github ====== | ||
Řádek 16: | Řádek 15: | ||
====== Používání GITu ====== | ====== Používání GITu ====== | ||
- | Pokud máme založený repozitář¸můžeme si vytvořit jeho lokální kopii. To se provede pomocí příkazu | + | Pokud máme založený repozitář¸můžeme si vytvořit jeho lokální kopii. To se provede pomocí příkazu |
+ | | ||
+ | V příkladu se vyskyuje cesta k repozitáři. To lze zjistit přímo z webu z githubu kdy na webu repoziáře je zelené tlačíko clone. | ||
Po provedení všech změn v našich souborech je potřeba tyto soubory přidat do gitu příkazem | Po provedení všech změn v našich souborech je potřeba tyto soubory přidat do gitu příkazem | ||
- | ``` | + | |
- | git add . | + | |
- | ``` | + | Následně je potřeba vytvořit bod, kdy se soubor bude verzovat. To se provede pomocí příkazu: |
- | Následně je potřeba vytvořit bod, kdy se soubor bude verzovat. To se provede pomocí příkazu | + | |
+ | U commitu lze psát nějaké popisky o tom, jaké změny jsme udělali. | ||
+ | |||
+ | Po vytvoření commitu stačí změny nahrát na server pomocí | ||
+ | git push | ||
+ | |||
+ | === Linux === | ||
+ | |||
+ | Jako nejefektivnější uživatelské rozhraní pro git se osvědčil příkazový řádek s tím, že jeho efektivita je zde ještě markantnější než u SVN. | ||
+ | |||
+ | == Nový uživatel == | ||
+ | Pro pohodlnou ptáci s git je efektivnější používat metodu klonování s SSH. Není při práci vyžadováno stále přihlašování. Komunikace je autentizována na základě privátního klíče. Pro každý počítač je potřeba vygenerovat unikátní klíč. | ||
+ | |||
+ | - Je potřeba si založit uživatelský účet na https:// | ||
+ | - Následně je potřeba [[https:// | ||
+ | - Vygenerovaný klíč je potřeba [[https:// | ||
+ | - Pokud v návodu nefunguje správně uložení klíče do schránky, tak je možné daný klíč získat otevřením skrytého souboru a provést překopírování klíče ručně. '' | ||
+ | - Tento postup stačí provést jen při prvním stahování na daném počítači. | ||
+ | |||
+ | == Základní příkazy == | ||
+ | |||
+ | == Klonování repozitáře : == | ||
+ | |||
+ | - Nejprve je potřeba vybrat místo, kde má být repozitář v počítači uložen a v daném místě si otevřít příkazový řádek. | ||
+ | - Příklad bude ukázán na repozitáři kicad-mlab: https:// | ||
+ | - Na dané stránce si stáhneme potřebnou cestu k repozitáři. Webové tlačítko "Clone or download" | ||
+ | - Je potřeba si přepnout cestu pro "Clone with SSH", na místo "Clone with HTTPS" | ||
+ | - Pro náš případ cesta vypadá takto: git@github.com: | ||
+ | - Nyní stačí v příkazové řádce zadat příkaz: | ||
+ | |||
+ | |||
+ | git clone git@github.com: | ||
+ | |||
+ | |||
+ | - Následně můžeme být vyzváni k zadání hesla, které jsme si zvolili při generování SSH klíče. | ||
+ | |||
+ | == Stažení aktuální verze: == | ||
+ | |||
+ | - V místě uložení repozitáře je potřeba zadat v příkazové řádce následující příkaz: | ||
+ | |||
+ | git pull | ||
+ | |||
+ | |||
+ | == Zjištění stavu aktuálnosti repozitáře == | ||
+ | |||
+ | git status | ||
+ | |||
+ | Tento příkaz vypíše u jakých souborů došlo ke změně, nebo které byli přidány jako nové. | ||
+ | |||
+ | == Přidání nového souboru, složky == | ||
+ | |||
+ | git add název_souboru | ||
+ | |||
+ | Po označení celé cesty z výpisu příkazů lze cestu vložit pomocí kliknutí na prostřední tlačítko myši. | ||
+ | Pro přidání všech změn lze použít ```git add .```. | ||
+ | |||
+ | == Vytvoření commitu == | ||
+ | |||
+ | git commit -m "Popis provedené změny" | ||
+ | |||
+ | Po tomto příkazu je commit pouze v lokální kopii repozitáře. Aby se data odeslala na server je potřeba zadat následující příkaz. | ||
+ | |||
+ | == Upload na server == | ||
+ | |||
+ | git push | ||
+ | |||
+ | Pro ověření, zda veškeré úkony proběhly v pořádku je dobré se podívat na výstup příkazu: | ||
+ | |||
+ | git status | ||
+ | |||
+ | Ve výpisu by neměly být žádné položky, které jsme chtěli nahrát. | ||
+ | |||
+ | |||
+ | == Změna velikosti lokálního repozitáře == | ||
+ | |||
+ | Git si ve výchozím nastavení stahuje celý repozitář včetně veškeré historie úprav. Toto lze zamezit při stahování repozitáře pomocí parametru ```--depth=< | ||
+ | |||
+ | git clone < | ||
+ | |||
+ | Pokuď toto chcete aplikovat na existující kopii repozitáře, | ||
+ | |||
+ | git fetch --depth 2 | ||
+ | git reflog expire --expire=all --all | ||
+ | git gc --prune=all | ||
+ | |||
+ | |||
+ | == Přejmenování větve repozitáře == | ||
+ | |||
+ | Protože u repozitářů hardware není vhodné využívat větev master, neboť mezi větvemi vyrobeného hardware nemá velký smysl větve slučovat do aktuální. Tak každý hardwarový repozitář obsahuje větve pojmenovávající varianty již vyrobeného hardware. | ||
+ | |||
+ | Protože git implicitně předpokládá název hlavní větve jako master, tak je nutné provést přejmenování. | ||
+ | |||
+ | Nejdříve lokálně přejmenujeme větev v naklonovaném repozitáři | ||
+ | git branch -m master new_branch | ||
+ | |||
+ | Změnu názvu je potřeba nahrát do repozitáře na serveru | ||
+ | git push --set-upstream origin new_branch | ||
+ | # Push the new branch, set local branch to track the new remote | ||
+ | |||
+ | Následně je potřeba ve webovém rozhraní githubu pro nastevení repozitáře změnit jméno default větve. (Na githubu volba Branches -> Default branch). | ||
+ | Pak je možné větev master smazat. | ||
+ | |||
+ | git push origin : | ||
+ | |||
+ | |||
+ | == Odděleni složky z repozitáře do samostatného repozitáře == | ||
+ | |||
+ | Některé repozitáře postupem času vyrostou v obrovské molochy, které na disku zabírají hodně prostoru. Toto je příklad repozitáře [[https:// | ||
+ | Plánovaným řešením tohoto problému je oddělení jednotlivých modulů do [[https:// | ||
+ | |dokumentace githubu]]. | ||
+ | |||
+ | Nejdříve je potřeba si naklonovat čistý repozitář. | ||
+ | |||
+ | git clone git@github.com: | ||
+ | |||
+ | V něm je potřeba vyfiltrovat složku, která obsahuje oddělovaný modul | ||
+ | |||
+ | git filter-branch --prune-empty --subdirectory-filter cesta_k/ | ||
+ | |||
+ | Takto upravenému repozitáři ještě vytvoříme větev pojmenovanou podle konkrétní verze modulu. | ||
+ | |||
+ | git branch -m master Názevmodulu_včetně_verze | ||
+ | |||
+ | Následně je potřeba na githubu vytvořit nový repozitář a cestu na remote nahradit jeho adresou. např. | ||
+ | |||
+ | git remote set-url origin git@github.com: | ||
+ | |||
+ | Pak stačí do repozitáře nahrát připravený obsah odděleného modulu | ||
+ | |||
+ | git push -u origin BRANCH-NAME | ||
+ | |||
+ | |||
+ | === Windows === | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
- | Po vytvoření commitu stačí změny nahrát na server pomocí ```git push```. | ||
cs/git.1567302874.txt.gz · Poslední úprava: 2019/09/01 01:54 autor: roman