CategoryGit

git commit

Kde můžu používám Git. Udržuji jen jediný projekt ještě na SVN a je to běs, ale vzhledem k tomu, že deploy aplikace je ze Subversionem svázaný, zatím z toho nejde utéct. Možná jde, ale nemám tolik času, abych to řešil. A navíc: ono to zatím funguje…

Komitování v Gitu

Dříve jsem Git používal výhradně z příkazové řádky a komitoval přímo v ní:

Od samého začátku jsem se naučil komitovat s vložením krátké jednořádkové zprávy, k čemuž mě vedl způsob zadávání příkazu na command promptu. Stručné, ale nedovolí vám se více rozepsat. Respektive dovolí, ale pak to není tak pohodlné z editací vkládaného textu zprávy.

Pak jsem přešel na Atom a do něj si nainstaloval skělý plugin git-plus. Veškerá práce s Gitem se smrskla na pár klávesových zkratek pro add, commit a push. Atom se postará o vše a formou hezkých samozavírajících oken vás informuje o dění v Gitu. Na a jednou z věcí kterou Atom řeší při samotném commit je, že vám otevře nový buffer, kde vidíte co komitujete a můžete pohodlně v editoru zadat commit message, která může být jak klasicky jednořádková, ale dovolí se vám rozepsat o komitovaných detailech.
Tohle je docela návyové.

Vedle toho stále pracuji s Gitem na příkazové řádce. Edituji, komituji, pushuji a pulluji.
A začal mi chybět editor pro zadávání commit message…

Git: komit s Atomem

Po zadáná commit příkazu je automaticky spuštěn Atom s bufferem pro zadání commit zprávy. Stačí napsat co je potřeba, a zavřít Atom. Po zavření Atomu je zpráva předána gitu. Super!

git commit atom

Git: dokumentace

Git Magic
Git for Teams
Git Version Control Cookbook
Learn-Git-in-a-Month-of-Lunches

Git v týmové práci

Pokud začnete git používat s někým společně, to znamená, že máte nějaký remote repozitář na serveru, který slouží jako centrální bod správy vašich zdrojáků a přistupujete k němu z více linuxových účtů, pak budete muset pořešit přístupová práva k adresáři s git barelem, aby mohli pušovat všichni.

Tenhle problém nebudete mít, pokud k centrálnímu serverovému repozitáři přistupijete sám, nebo sdílíte jeden linuxový účet na serveru s gitem.

Takže pokud je vás víc a všichni máte svůj vlastní účet, je potřeba udělat následující:

Git branch v bash promptu

Super název, ale vystihuje přesně o co jsem se snažil.

Hodně práce při vývoji a pak při deploy aplikace strávím v terminálu (iTerm2). Pro správu verzí používám Git a pro deploy se přepínám mezi různými branchemi dané aplikace. A docela mi vadilo, že když uděláte git checkout, tak hned vidíte, že jse se přepnuli do nějaké větve, ale po zadání několika dalších příkazů vám info z gitu odscroluje a pak už nevíte nic. No a těsně před tím, než se rozhodnete udělat git push, zase spustíte git branch, abyste se přesvědčili, že pushujete tu správnou větev… A takhle několikrát deně… Strašný vopruz.

A protože jsem už kdysi viděl v zsh, že jde info o branchi umístit přímo do promptu vašeho shelu, začal jsem hledat jak nastavit bash prompt v iTerm2. Vyzkoušel jsem několik postupů a možností, až mi vyšel tenhle jako nejlépe fungující a zároveň nejjednodušší:

Tohle umístěte do .bashrc:

Uložte .basrc a proveďte source .bashrc.

Výsledkem bude krásný prompt, který obsahuje název aktualní branche vašeho git projektu.
Snímek obrazovky 2015-12-04 v 21.21.42
Hezké je, že když se nenacházíte v adresáři s git repozitářem, tak se v promptu žádná informace nevypisuje.

Vizualizace gitu

Git je skělý nástroj pro správu zdrojových kódů. Našel jsem tuhle stránku, která umí vizualizovat git operace nad repozitářem. To znamená, že pokud si neumíte oředstavit jak funguje commit, nebo merge, pak na této stránce přímo uvidíte co se děje v git repozitáři.

V terminálovém okně na stránce zadáváte příkazy gitu a na téže stránce se online dokresluje graf vaší práce. Získáváte okamžitou odezvu a představu o tom jak váš repozitář po každém příkazu vypadá.

git-workflow-release-cycle-2feature

Git: 14 tipů a nástroje pro řešení konfliktů

Git je skvělý nástroj pro správu vyvíjeného projektu. Dá se použít hned pro několik důležitých věcí:

  1. verzování vašich zdrojáků a switchování mezi verzemi s možností funkce undo…
  2. zálohování vaší práce
  3. deploy aplikace na produkční, nebo jakékoliv jiné, prostředí, nebo úplně někam jinam

Dokud vyvíjíte sám, všechno super a ízy. Jste pány svého adresáře a jak si to uděláte, tak to budete mít. Tedy až do chvíle, kdy zapojíte do projektu někoho dalšího a on vám začne vrtat do vašich souborů. V ten moment budete mít problém se synchronizací prováděných změn. A bude se vám hodit tenhle jednoduchý seznam tipů pro git a dalších nástrojů řešící týmovou práci, respektive git konflikty.

what-is-a-merge

Git, založení repozitáře

Repozitářem rozumím adresář na nějakém serveru, kde je centrální kopie vašeho projektu. Slovo repozitář jsem si vypůjčil ze SVN, kde má asi přesnější význam, protože SVN je daleko více centrálně orientovaný.

Pro správu projektu pomocí Gitu vlastně žádný centrální repozoitář vůbec mít nemusíte. Můžete si inicializovat Git přímo v adresáři s Vaší aplikací a tam jej spravovat. Pokud budete potřebovat něco někam exportovat, tak to také nebude žádný problém.

Já centrální repozitář používám z toho důvodu, že mi pomáhá distribuovat aplikaci z mého notebooku na servery, kde aplikace běží. Na svém notebooku vyvíjím, pak pushuji do centrálního repozitáře, který mi slouží i jako záloha mé práce, ale hlavně jako místo, odkud se pak rozehrávají na další stroje.

Git na serveru

Založení vlastního centrálního repozitáře na serveru. Místo kam pushuji a odkud se pak pulluje na další místa.

Hotovo. Tímto se v ~/git/PROJECT_NAME vytovřil centrální repozitář.

Na lokále

Na svém notebooku mám v nějakém adresáři například jen kostru aplikace, kterou chci spravovat skrze centrální repozitář na serveru a dál jej nějak distribuovat.

Hotovo. Data z adresáře s mým projektem se pushnuli do centrálního repozitáře vytvořeného v předchozím kroku.

Kopie na dalším stroji

Pokud pak potřebuji kopii projektu umístit na nějaký produkční server, nebo kamkoliv jinam, třeba i na další stroj, na kterém pak bude probíhat další vývoj, stačí si projekt naklonovat z centrálního repozitáře.

Hotovo. V aktuálním adresáři máme naklonovaný projekt z centrálního repozitáře, se kterým můžeme dále pracovat.

Takto spravovaný projekt mi umožňuje jej pohodlně vyvíjet v podstatě kdekoliv, ale i publikovat na další servery pro testování, nebo ostrý provoz.

git

Git a pushování

Pokud jste součástí nějakého týmu, který svůj projekt spravuje v Gitu, a vy pracujete na nějaké funkcinalitě v oddělené lokální větvi, pak se čas od času nevyhnete tomu, že budete muset přepínat mezi svou vývojovou větví, nějakou hlavní větvi a pak se vracet zpátky do svého vývoje. No a pak čas od času budete komitovat své změny do remote branche vaší větve.

Abych si tohle co nejvíc zjednodušil a přitom viděl co a kam se pushuje, napsal jsem si bash script, který tohle dělá.

Git: založení remote branche

Pokud budete vyvíjit ve spolupráci s dalšími programátory, budete chtít krom hlavní vývojové větve vyvíjet i nějaké nové funkcinality nezávisle a separátně, abyste nenarušily např. již otestovanž a funkční stav vašeho projektu.

Vaše práce bude samozřejmě probíhat lokálně, jen pushovat budete do nové větve Git repozitáře na serveru. Ostatní programátoři tak budou mít možnost stáhnoit si vaší práci a dodělávat v ní co bude třeba.

Git a větvení projektů

Založení větve na serveru

Branch (větev) na serveru je bočnní verze, která vznikne odloučením z některé jiné větve. Obvykle se v ní provádějí nějaké další změny, které by neměly ovlivnit funkcionalitu hlavní větve. Teprve po odladění se tato bokovka merguje (sloučí) s nějakou hlavní větví, ve které se pokarčuje dál.

Seznam větví na serveru

Na serveru může existovat více větví na kterých se pracuje. Seznam větví získáte následovně:

Script pro založení remote branche

Abyste nemuseli pro založení nové větve nemuseli zadávat spousty příkazů a v pravdě ne vždy si přesně pamatujete syntaxi a parametry daného příkazu, bude se vám hodit tento shell script, který se o vše postará.

Smazání lokálního branche

Pokud jste si stáhnuli ze serveru nějakou větev k sobě na lokál, zkouknuli jste co jste chtěli a k větvi se už dál nechcete vracet, pak můžete smazat branch na svém lokále:

Smazání branche na serveru

Tady opatrně! Pokud se vám podaří zmergovat nějakou větev do hlavní větve vašeho projektu a práce v dané branchi zkončila, můžete celý branch na centrálním git repozitáři smazat. Nikdo už jej neuvidí a nebude si jej moch checkoutnout.

Pokud smažete branch na serveru a budete jí chtí obnovit, budete muste najít někoho, kdo má na svém lokále nějakou poslední verzi této větve a z ní větev znovu obnovit, vytvořit.

Checkout vzdálené větve na lokál

Aktualizace lokální vývojově větve z jiného branche

Pokud vyvíjíti oddělené v nějaké vlastní větvi (řekněme, že se váš branch jmenuje novinka) a vedle vás se dál vyvíjí v nějaké hlavní větvi (řekněme, že se jmenuje develop) a vy potřebujete do své větve zaimplementovat změny, které proběhly v hlavní větvi, pak následovně:

I takhle jednoše může vypadat větvení vašeho projektu.
git, práce ve větvích

© 2017 pepa.holla.cz

Theme by Anders NorénUp ↑