Hlavní navigace

GIT: config, commit, e-mail a browsing

Karel Žák 21. 5. 2008

Každý, kdo spravuje velké množství obsahu, časem přijde na to, že by potřeboval software, který by mu pomohl nad tímto obsahem držet ochrannou ruku. Takovým pomocníkem může být například nástroj GIT. V dnešním článku probereme konfiguraci GITu, naučíme se provádět commit a posílat patche e-mailem.

Před tím než začnete provádět změny do svého repositáře, je vhodné provést alespoň základní konfiguraci. Konfigurace se ukládá do souboru .git/config nebo ~/.gitconfig a k modifikaci/lis­tování slouží příkaz  git-config.

$ git config --global --list

GIT vcelku pečlivě uchovává informace o autorech a commitorech patchů. Je však nutno na počátku nastavit:

$ git config --global user.name "Full Hacker"
$ git config --global user.email hacker@example.com"

Je tedy na čase udělat do repositáře nějakou změnu. Předpokládejme, že máme nově udělaný prázdný repositář. Ve svém editoru vytvořte soubor file1.c a řekněte GITu, že soubor má být součásti příštího commitu (přesněji řečeno přidejte soubor do indexu):

$ git add file1.c

Podívejme se, co na to GIT:

$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file: file1.c
#

Provedeme commit:

$ git commit -a -s -m "toto je komentář"

a pro studium jednotlivých options:

$ git commit --help

Důležité je nezapomenout, že první řádka komentáře patche se používá jako subject a pojmenování patche.

Nakonec se můžeme na celý commit podívat:

$ git show
commit e8fa25358eca06285757e3c1029d7f5f884283be
Author: Karel Zak <kzak@....>
Date:   Wed Mar 19 00:08:09 2008 +0100

    toto je komentář

  Signed-off-by: Karel Zak <kzak@redhat.com>

diff --git a/file1.c b/file1.c
new file mode 100644
index 0000000..53c5fdf
--- /dev/null
+++ b/file1.c
@@ -0,0 +1 @@
+#include <stdio.h>

Neuvedli jsme žádnou referenci (tag, SHA-1, …) takže příkaz show byl proveden na default referenci, kterou je HEAD, tedy poslední commit aktuální větve.

Občas se hodí vydolovat patch z repositáře a uložit ho jako samostatný diff soubor:

$ git format-patch -o ~/ HEAD^
/home/kzak/0001-any-other-include.patch

a když už máme patch, tak ho můžeme někomu poslat:

$ git send-email --to guru@project.org ~/0001-any-other-include.patch

Na rozdíl od řady MUA se tento příkaz nedopustí žádného násilí na odesílaném diffu. Je nepsaným pravidlem posílat patche v těle dopisu (žádná příloha) a posílat vždy jeden patch v jednom e-mailu. Je zřejmé, že cesta mezi vaší tvořivostí ve vašem editoru a odesláním hotového patche může být hodně krátká a přímočará.

Pokud nějaký patch dostanete e-mailem, lze ho snadno aplikovat pomocí příkazu:

$ git am -i ~/Mail/box

Pochopitelně příkaz může být nefunkční, pokud odesílatel použil hloupý MUA nebo přílohu.

Co opravdu v podání CVS bolí, je hledání odpovědí na to, co kdo kde změnil. V GITu seznam všech změn:

$ git log

nebo stručněji:

$ git log --pretty=oneline

Zajímá-li vás jen určitý soubor:

$ git log file1.c

A co třeba jednotlivé řádky souboru? Typicky „Jééé… kterej trouba udělal tenhle bug?“:

$ git blame -L8,8 file1.c
4ba6758a (Karel Zak 2008-03-19 00:52:03 +0100 8)      printf("%s\n", argv[argc+1]);

tedy na řádce 8 ( -L je rozsah) v souboru file1.c.

Našli jste v článku chybu?

9. 2. 2011 7:52

$ git config --global user.email hacker@example.com"

... nechýba tu náhodou úvodzovka pred e-mailom?

21. 5. 2008 1:20

Boris Filipovič (neregistrovaný)
Neměl by být výstup u git show spíš ve tvaru: Author: Full Hacker hacker@.... když jsme si to předtím v té konfiguraci tak nastavili?
b.f.
Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Žloutenka v Brně: Nakaženo bylo 400 lidí

Žloutenka v Brně: Nakaženo bylo 400 lidí

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: Dárky v podnikání. Jak je uplatnit v daních?

Dárky v podnikání. Jak je uplatnit v daních?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV