Uživatelské nástroje

Nástroje pro tento web


cs:git

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
cs:git [2019/09/01 21:31]
roman
cs:git [2022/01/17 16:42] (aktuální)
kaklik
Řádek 7: Řádek 7:
 Celý systém funguje tak, že uživatel po nějaké změně v repozitáři vytvoří commit, čímž tyto změny "zapíše" do stromové struktury repozitáře a následně je nahraje na server. Další uživatel si tyto změny (commity) stáhne a může s nimi pracovat.  Celý systém funguje tak, že uživatel po nějaké změně v repozitáři vytvoří commit, čímž tyto změny "zapíše" do stromové struktury repozitáře a následně je nahraje na server. Další uživatel si tyto změny (commity) stáhne a může s nimi pracovat. 
  
-Například moduly stavebnice MLAB jsou uloženy také v jednom repozitáři hostovaném na GitHubu.+Například moduly stavebnice MLAB jsou uloženy také v jednom repositáři hostovaném na GitHubu.
  
 ====== Github ====== ====== Github ======
Řádek 28: Řádek 28:
 Po vytvoření commitu stačí změny nahrát na server pomocí Po vytvoření commitu stačí změny nahrát na server pomocí
   git push   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://github.com/
 +  - Následně je potřeba [[https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/|vygenerovat na daném počítači SSH klíč]].
 +  - Vygenerovaný klíč je potřeba [[https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/|vložit do účtu na githubu]]
 +  - 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ě. ''cat ~/.ssh/id_rsa.pub''
 +  - 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://github.com/MLAB-project/kicad-mlab
 +  - 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:MLAB-project/kicad-mlab.git
 +  - Nyní stačí v příkazové řádce zadat příkaz:
 +
 +
 +  git clone git@github.com:MLAB-project/kicad-mlab.git
 +
 +
 +  - 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=<pocet stazenych commitu>```
 +
 +  git clone <adresa_repozitare> --depth=1
 +
 +Pokuď toto chcete aplikovat na existující kopii repozitáře, lze to provést následujícím postupem.
 +
 +  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         # Rename branch locally    
 +
 +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 :master                 # Delete the old branch    
 +
 +
 +== 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://github.com/MLAB-project/Modules|Modules]].  Přitom častým požadavkem lidí je snadno navázat na konstrukci jednoho jedinného modulu. Což znamená si ho na githubu forknout. 
 +Plánovaným řešením tohoto problému je oddělení jednotlivých modulů do [[https://github.com/mlab-modules|samostatné organizace]].  Pro oddělení složky modulu do samostatného repozitáře využijeme postup z [[https://help.github.com/en/github/using-git/splitting-a-subfolder-out-into-a-new-repository
 +|dokumentace githubu]].
 +
 +Nejdříve je potřeba si naklonovat čistý repozitář. 
 +
 +  git clone git@github.com:MLAB-project/Modules.git
 +  
 +V něm je potřeba vyfiltrovat složku, která obsahuje oddělovaný modul
 +
 +  git filter-branch --prune-empty --subdirectory-filter cesta_k/modulu  master
 +  
 +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:mlab-modules/ISM02.git
 +
 +Pak stačí do repozitáře nahrát připravený obsah odděleného modulu
 +
 +  git push -u origin BRANCH-NAME
 +
 +
 +=== Windows ===
 +
 +[[https://tortoisegit.org/download/|TortoiseGit]] Pod operačním systémem Windows je možné stahovat pohodlně data z GitHub do počítače přes program [[cs:tortoisegit|TortoiseGit]].
 +
 +
 +
 +
 +
 +
 +
  
  
cs/git.txt · Poslední úprava: 2022/01/17 16:42 autor: kaklik