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

Následující verze
Předchozí verze
cs:git [2019/09/01 01:54] – vytvořeno romancs:git [2022/01/17 15:42] (aktuální) kaklik
Řádek 1: Řádek 1:
-====== Git ====== +====== Práce s verzovacím softwarem GIT ======
  
 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 "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 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 ```git clone <url k repozitáři>```. 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.+Pokud máme založený repozitář¸můžeme si vytvořit jeho lokální kopii. To se provede pomocí příkazu 
 +  git clone <url k repozitáři> 
 +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 . 
-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 ``` git commit -m "Zaprava" ```. U commitu lze psát nějaké popisky o tom, jaké změny jsme udělali.+  git commit -m "Zaprava" 
 +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://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]]. 
 + 
 + 
 + 
 + 
 + 
  
-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