Hrám sa s gitom izolovane na svojom počítači a je pre mňa ťažké udržať si mentálny model všetkých svojich vetiev a revízií. Viem, že môžem urobiť git log
, aby som videl históriu revízií z miesta, kde sa nachádzam, ale existuje spôsob, ako vidieť celú topografiu vetiev, niečo ako tieto ascii mapy, ktoré sa zrejme všade používajú na vysvetlenie vetiev?
.-A---M---N---O---P
/ / / / /
I B C D E
\ / / / /
`-------------'
Zdá sa mi, že niekto, kto by prišiel a snažil sa vyzdvihnúť môj repozitár, by mal problém zistiť, čo presne sa deje.
Myslím, že som ovplyvnený AccuRev's stream browser...
git log --graph
alebo gitk
. (Obidve funkcie akceptujú aj --all
, ktoré zobrazia všetky vetvy namiesto aktuálnej.)
Upraviť:
Pre názvy vetiev a kompaktné zobrazenie vyskúšajte: git log --graph --decorate --oneline
Zvyčajne používam
git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"
S farbami (ak je váš shell Bash):
git log --graph --full-history --all --color \
--pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"
Toto vypíše textovú reprezentáciu takto:
* 040cc7c (HEAD, master) Mannual is NOT built by default
* a29ceb7 Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd (cvc3) cvc3 now configured before building
| * d9e8b5e More sane Yices SMT solver caller
| | * 5b98a10 (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874 CFLAGS for cvc3 to work succesfully
| * 1579581 Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b nostaticalias option
| | * 73b91cc Comment about aliases.
| | * 001b20a Prints number of iteration and node.
| |/
|/|
| * 39d2638 Included header files to cvc3 sources
| * 266023b Added cvc3 to blast infrastructure.
| * ac9eb10 Initial sources of cvc3-1.5
|/
* d642f88 Option -aliasstat, by default stats are suppressed
(Mohli by ste použiť len git log --format=oneline
, ale to by sa správy o revízii viazali na čísla, čo IMHO nevyzerá tak pekne).
Ak chcete vytvoriť skratku pre tento príkaz, môžete upraviť súbor ~/.gitconfig
:
[alias]
gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"
Ako však poznamenáva Sodel the Vociferous v komentároch, takýto dlhý formátovací príkaz sa ťažko pamätá. Zvyčajne to'nie je problém, pretože ho môžete umiestniť do súboru ~/.gitconfig
. Ak sa však niekedy musíte prihlásiť na vzdialený počítač, kde nemôžete'upravovať konfiguračný súbor, môžete použiť jednoduchšiu, ale na písanie rýchlejšiu verziu:
git log --graph --oneline
Rád, s git log
, robiť:
git log --graph --oneline --branches
(tiež s --all, aj pre zobrazenie vzdialených vetiev)
Pracuje s poslednými vydaniami systému Git: zavedené od verzie 1.6.3 (čt, 7. mája 2009)
- "
--pretty=<style>
" možnosť rodiny príkazov log sa teraz môže písať ako "--format=<style>
".
Okrem toho--format=%formatstring
je skratka pre--pretty=tformat:%formatstring
.
- "
--oneline
" je synonymom pre "--pretty=oneline --abbrev-commit
".
PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0
Môžete tiež obmedziť rozsah zobrazenia denníka (počet revízií):
PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
(zobrazí len posledných 5 revízií)
Čo sa mi nepáči na súčasnom vybranom riešení je:
git log --graph
Zobrazuje príliš veľa informácií (keď sa chcem pozrieť len na rýchly prehľad):
PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <[email protected]>
| Date: Sat Nov 14 13:42:20 2009 +0100
|
| a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <[email protected]>
| Date: Sat Nov 14 13:41:50 2009 +0100
|
| a first bug10 fix
|
gitk
je skvelý, ale núti ma opustiť reláciu shellu a prejsť do iného okna, zatiaľ čo rýchle zobrazenie posledných n commitov často stačí.