Git: Porovnání verzí

Z FI WIKI
Přejít na: navigace, hledání
(Práce v týmu)
(Commity, větve, tagy)
Řádka 89: Řádka 89:
 
* '''master''' ukazuje na poslední commit ve výchozí větvi
 
* '''master''' ukazuje na poslední commit ve výchozí větvi
 
* '''origin/HEAD''' ukazuje na současný commit v origin repository (ze které lokální repository vznikla klonováním)
 
* '''origin/HEAD''' ukazuje na současný commit v origin repository (ze které lokální repository vznikla klonováním)
* '''origin/master''' ukazuje na poslední commit výchozí větve v origin repository  
+
* '''origin/master''' ukazuje na poslední commit výchozí větve v origin repository
 +
 
 +
Je vidět, že lokální repository je napřed o jeden commit oproti origin repository.
  
 
== Práce v týmu ==
 
== Práce v týmu ==

Verze z 28. 2. 2017, 15:15

Git je distribuovaný systém správy verzí zdrojového kódu. Tutoriál je dostupný na atlassian.com.

GitHub je veřejný webový hosting pro git repositories.

GitLab na FI MU je soukromý webový hosting pro git repositories, jde o instalaci software GitLab na FI MU.


Vytvoření repository

(tutoriál)

  1. pokud ještě nemáte, vytvořte si účet na GitHubu nebo v GitLabu na FI MU
  2. v jeho webovém rozhraní vytvořte novou repository, například https://github.com/pepa/test1 nebo https://gitlab.fi.muni.cz/pepa/test1
  3. stále ve webovém rozhraní vytvořte soubor README.md a něco do něj napište
  4. na příkazovém řádku oklonujte tuto repository příkazem git clone https://github.com/pepa/test1
  5. vstupte do adresáře s oklonovanou repository příkazem cd test1

V tomto okamžiku existuje soubor README.md třikrát:

  • v původní repository na GitHubu, budeme ji nazývat origin
  • v pracovním adresáři test1, budeme ho nazývat working copy
  • v lokální repository v adresáři test1/.git

Nastavení autora

Před tím, než provedete první commit, nastavte svoje jméno a emailovou adresu, podle které bude posuzováno autorství commitů (viz Setting your email in Git). Uděláte to příkazy

git config --global user.email "pepa@example.com"
git config --global user.name "Pepa Novak"

Toto nastavení je uloženo v souboru ~/.gitconfig.

Provedení změn

  1. libovolným editorem změňte obsah souboru README.md, změny jsou zatím jen ve working copy
  2. zaregistrujte změnu tohoto souboru do příštího commitu příkazem git add README.md
  3. proveďte commit zaregistrovaných změn příkazem git commit -m "edited README" kde parameter -m přidává zprávu ke commitu, teď je změna v lokální repository
  4. pošlete poslední commity z lokální repository do origin repository na GitHubu příkazem git push

Obecně editováním měníte soubory ve working copy, příkazem git add vytváříte seznam změn, které budou v příštím commitu (tzv. staging area), a příkazem git commit připravený seznam změn uložíte do lokální repository v adresáři .git jako určitý stav souborů nazývaný commit.

Výpis stavu

  • git status zobrazí rozdíly working copy oproti repository
  • git log vypíše seznam commitů v lokální repository
  • git log --oneline --abbrev-commit --all --graph --decorate --color vypíše hezky barevný seznam commitů
  • gitg --all spustí grafický klient pro prostředí Gnome zobrazující commity i všechny existující větve v lokální repository


Nastavení ignorovaných souborů

Ne všechny soubory ve working copy budeme chtít mít i v repository, a ani nebudeme chtít, aby nás git status na jejich existenci stále upozorňoval. Jde hlavně o soubory produkované vývojovými prostředími a kompilátorem.

Proto vytvoříme soubor .gitignore s následujícím obsahem:

.idea
.settings
.project
test-output
.classpath
*.iml
*~
target

který obsahuje seznam takových souborů a adresářů pro INtelliJ IDEA, NetBeans i Maven.

Tento soubor přidáme do repository příkazy git add .gitignore; git commit -m "added list of ignored files".

Commity, větve, tagy

Pokud jste postupovali podle návodu výše, máte teď repository v následujícím stavu (zobrazeno pomocí gitg):

Gitg 1.png

kde každý řádek v horní části zobrazuje jeden commit, jeho autora a čas vytvoření. Dolní část zobrazuje změny souborů obsažené ve zvoleném commitu.

Obdobný výpis lze získat i příkazem git log:

$ git log --oneline --abbrev-commit --all --graph --decorate --color
* 475479f (HEAD -> master) added list of ignored files
* cfc6828 (origin/master, origin/HEAD) edited README
* d8e181f Create README.md

Barevné obdélníčky označují tzv. větve (branches). Větev je pojmenovaný ukazatel na nějaký commit, který se automaticky posune, když vznikne následovník commitu.

V této ukázce označuje

  • HEAD ukazuje na současný commit v lokálním repository
  • master ukazuje na poslední commit ve výchozí větvi
  • origin/HEAD ukazuje na současný commit v origin repository (ze které lokální repository vznikla klonováním)
  • origin/master ukazuje na poslední commit výchozí větve v origin repository

Je vidět, že lokální repository je napřed o jeden commit oproti origin repository.

Práce v týmu

GitHub umožňuje dva způsoby spolupráce v týmu:

  • sdílená repository
  • fork and pull