Git - tahák pro práci z konzole

Při vývoji jakékoliv aplikace se dostaneme do stavu, kdy se potřebujeme vrátit k nějaké jiné verzi kódu. Pokud na projektu pracuje více vývojářů, tak verzovací systém se stane nezbytností, bez které je vývoj nemožný. A právě proto vznikl Git. V tomto článku je seznam příkazů, které nejčastěji používám.  Teď trocha teorie.

Continuous Integration & Continuous Delivery
(CI/CD)

„Kontinuální integrace je technika vývoje software, při které členové vývojového týmu pravidelně integrují svou práci, obvykle každý člen týmu alespoň jednou denně – to vede k mnoha integracím denně. Každá integrace je ověřena automatickým sestavením a provedením automatizovaných testů, aby bylo možné co nejrychleji zjistit případné chyby integrace. Mnoho týmů shledalo, že tento přístup vede k výraznému snížení problémů plynoucích z integrace a umožňuje týmům tento přístup vyvinout soudržný software rychleji.“ - Martin Fowler, Continuous Integration

A teď praxe :)

 

Konfigurace git

Na počátku každého projektu spravovaném přes git bylo slovo, respektive dvě slova: git init. Příkaz vytvoří složku .git. To je právě to místo, kde se lokálně ukládají verzované záznamy o projektu a jeho větvých.

git init

Pokud jste to ještě neudělali, budete si muset nastavit základní údaje o vás. Každý záznam v gitu má svého autora. Přes config si ho nastavíte. Nepjrve si vypíš aktuální konfiguraci:

git config -l

Setnu moje údaje:

git config user.name "Ludek Kvapil"

git config user.email developer@local.email

Odteď budou mé commity označené autorem a emailem, takže všichni budou vědět, kdo to commitnul. Občas může dojít ke konfliktu mezí konfigurací projektu a konfigurací globální, např. když používáte na firemním projektu jiný email než na soukromých aktivitách. Pak je třeba použít parametr --global. Parametr --local používat nemusíte, protože je výchozí.

git config --global user.email developer@global.email

Práce s větvemi

git branch

Ve většině první příkaz, který použíjete - clone. V ukázkovém případě si naklonuju repozitář projektu joinup-dev:

git clone https://github.com/ec-europa/joinup-dev.git

Stáhnout nové branche ze vzdáleného repozitáře

git fetch

Přepnutí na lokální branch feature/test_branch

git checkout feature/test_branch

Stáhnutí změn aktuální branche ze vzdáleného repozitáře

git pull

Stáhnutí změn z develop branche ze vzdáleného repozitáře

git pull origin develop

Zobrazí rodičovskou branch na vzdáleném repozitáři

git remote show origin

Odeslat commitnuté změny do vzdáleného repozitáře

git push

Změny v kódu

Když chci přidat všechny změny do sledovaných:
git add -A

Může se stát, že ve sledovaných je nechtěný soubor. Ten jde odebrat přes rm:
git rm unwanted_file.txt

Přehled všech sledovaných změn a jejich status vypíše git status:
git status

Přehled změn si můžu nechat vypsat před diff. Toto je jeden z mála případů, kdy mi přijde lepší používat IDE. Ale pro pořádek:

git diff

Když si uvědomíte, že všechno je totálně rozjebané a nejlepší je na všechno zapomenout a začít znovu. Reset: git reset HEAD --hard

Přidání commitu

Všechny změny v kódu je třeba okomentovat. K tomu slouží git commit. Všechny aktuální změny s krátkou zprávou o obsahu změn zapíšu:
git commit -am "Initial commit"

Občas se stane, že si commitnu změny, ale zapomenu nějakou změnu, kterou jsem chtěl přidat. Pro tyto případy slouží --amend:
git commit --amend

Když commitnu se špatným autorem, kterého repozitář odmítá, tak můžu commit updatnout přes:
git commit --amend --author="Ludek Kvapil <mujmail@gmail.com>"

Když vás bude zajímat, co kdo v daném repozitáři commitnul, tak stačí vypsat git log:
git log --pretty=oneline

Odložení změn

Občas si potřebuju změny někam odložit. Typicky je to v situaci, kdy mám nějaké změněné soubory a pak si uvědomím, že jsem na špatné branchi. Pro tyto případy je ideální git stash.

Odložím si změny přidané přes git add.

git stash

Vyzvednu si odložené změny

git stash apply

Když hledám něco, co jsem si odložil dříve.  Vypíšu si seznam odložených změn.

git stash list

Poté můžu vyzvednout starší odloženou verzi.

git stash apply stash@{n}

Tagy

Když chci seznam všech tagů, které začínají 1.4

git tag -l "1.4*"

Přidám nový tag se zprávou

git tag -a 1.4.1 -m "my version 1.4"

Odešlu tagy do repozitáře

git push --tags

git flow init

branches:

  • master
  • develop
  • feature
  • bugfix

 

git flow feature start branch_name

git flow feature publish branch_name

Git repozitáře

https://github.com

https://about.gitlab.com/

https://bitbucket.org/