Gráficos de ramos git bonitos

Já vi alguns livros e artigos que têm gráficos muito bonitos de Git branches e commits. Como posso fazer imagens impressíveis de alta qualidade da história do git?

 1018
Author: WayToDoor, 2009-06-29

30 answers

Atualização: esta resposta tem recebido muito mais atenção do que merece.  Foi originalmente postado porque eu acho que os gráficos parecem bonitos e eles poderiam ser desenhados-em Ilustrador para uma publicação– e não havia uma solução melhor.  Mas agora existem respostas muito mais aplicáveis a este Q, Como fracz's, Jubobs', ou Harry Lee's!  Por favor, vai votar isso!!

Atualização 2: eu postei uma versão melhorada desta resposta para o Visualizando topologia do ramo na questão do git, já que é muito mais apropriado lá.  Essa versão inclui lg3, o que mostra tanto a informação do autor e do committer, então você realmente deve verificar.  Deixando esta resposta para razões históricas (&rep, eu admito), embora eu estou realmente tentado a apenas apagá-lo.

: tenho dois pseudónimos que costumo colocar no meu ficheiro:

[alias]
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"

git lg/git lg1 parece isto.:
git lg1

E Parece-se com isto.:
git lg2

 1554
Author: Slipp D. Thompson, 2017-05-23 12:18:30
Muitas das respostas aqui são ótimas, mas para aqueles que apenas querem uma linha simples para a resposta de ponto sem ter que configurar nomes falsos ou qualquer coisa extra, aqui está:
git log --all --decorate --oneline --graph

Não é todo mundo estaria fazendo um git log o tempo todo, mas quando você precisa apenas lembre-se: "Um Cão " = git log --umll --decorate --oneline --graph

enter image description here

 618
Author: Patoshi パトシ, 2018-03-23 01:37:39

Para a saída textual pode tentar:

git log --graph --abbrev-commit --decorate --date=relative --all

Ou:

git log --graph --oneline --decorate --all

Ou: aqui está a graphviz alias for drawing the DAG graph.

Eu uso pessoalmente gitx, gitk --all e gitnub.

 291
Author: keo, 2016-12-03 00:48:16

Gitgraph.o js permite desenhar ramos git bonitos sem um repositório. Basta escrever um código Javascript que configura seus ramos e commits e rendê-lo no navegador.

var gitGraph = new GitGraph({
   template: "blackarrow",
   mode: "compact",
   orientation: "horizontal",
   reverseArrow: true
});

var master = gitGraph.branch("master").commit().commit();
var develop = gitGraph.branch("develop").commit();
master.commit();
develop.commit().commit();
develop.merge(master);

sample graph generated with Gitgraph.js

Ou com metro Modelo:

GitGraph.js metro theme

Ou com mensagens de commit, autores e marcas:

GitGraph with commit messages

Testa - o com JSFiddle .

Gera-o com Git Grapher por @bsara.

 186
Author: fracz, 2016-11-29 06:57:57

Construído em cima de TikZ & PGF, gitdags é um pequeno pacote de LaTeX que lhe permite produzir facilmente gráficos vectoriais de commit, e muito mais.

A geração automática do grafo de commit de um repositório existente é Não {[12] } O objectivo de gitdags; Os gráficos que produz apenas se destinam a fins educativos .

Muitas vezes uso-o para produzir gráficos para as minhas respostas às perguntas Git, como uma alternativa ao commit ASCII gráficos:

Toma. is an example of such a graph demonstrating the effects of a simple rebase:

enter image description here

\documentclass{article}

\usepackage{subcaption}
\usepackage{gitdags}

\begin{document}

\begin{figure}
  \begin{subfigure}[b]{\textwidth}
    \centering
    \begin{tikzpicture}
      % Commit DAG
      \gitDAG[grow right sep = 2em]{
        A -- B -- { 
          C,
          D -- E,
        }
      };
      % Tag reference
      \gittag
        [v0p1]       % node name
        {v0.1}       % node text
        {above=of A} % node placement
        {A}          % target
      % Remote branch
      \gitremotebranch
        [origmaster]    % node name
        {origin/master} % node text
        {above=of C}    % node placement
        {C}             % target
      % Branch
      \gitbranch
        {master}     % node name and text 
        {above=of E} % node placement
        {E}          % target
      % HEAD reference
      \gitHEAD
        {above=of master} % node placement
        {master}          % target
    \end{tikzpicture}
    \subcaption{Before\ldots}
  \end{subfigure}

  \begin{subfigure}[b]{\textwidth}
    \centering
    \begin{tikzpicture}
      \gitDAG[grow right sep = 2em]{
        A -- B -- { 
          C -- D' -- E',
          {[nodes=unreachable] D -- E },
        }
      };
      % Tag reference
      \gittag
        [v0p1]       % node name
        {v0.1}       % node text
        {above=of A} % node placement
        {A}          % target
      % Remote branch
      \gitremotebranch
        [origmaster]    % node name
        {origin/master} % node text
        {above=of C}    % node placement
        {C}             % target
      % Branch
      \gitbranch
        {master}      % node name and text 
        {above=of E'} % node placement
        {E'}          % target
      % HEAD reference
      \gitHEAD
        {above=of master} % node placement
        {master}          % target
    \end{tikzpicture}
    \subcaption{\ldots{} and after \texttt{git rebase origin/master}}
  \end{subfigure}
  \caption{Demonstrating a typical \texttt{rebase}}
\end{figure}

\end{document}
 98
Author: jubobs, 2017-05-23 12:02:56

O Gitg é um clone do Gitk e do GitX para o GNOME (também funciona no KDE, etc.) que mostra um gráfico bastante colorido.

Está activamente desenvolvido (a partir de 2012). Permite-lhe ordenar os commits (nós de grafos) cronologicamente ou topologicamente, e esconder os commits que não levam a um ramo seleccionado.

Funciona bem com repositórios grandes e gráficos de dependências complexos.

Imagens de exemplo, mostrando o linux-git e o linux-2. 6 repositorio:

linux-git

linux-2.6

 73
Author: Mechanical snail, 2015-08-18 16:48:31
O SourceTree é muito bom. Ele imprime um histórico de tamanho bom e médio e grafo de branch: (o seguinte é feito em um projeto experimental Git apenas para ver alguns ramos). Suporta Windows 7+ e Mac OS X 10.6+.

enter image description here

Http://www.sourcetreeapp.com/

 57
Author: 太極者無極而生, 2013-05-21 18:24:56

Acabei de escrever uma ferramenta que pode gerar git grafo commits usando HTML/Canvas.

E fornecer um plugin jQuery que torna fácil de usar.

[github] https://github.com/tclh123/commits-graph

Antevisão:

preview

 54
Author: Harry Lee, 2014-01-14 15:34:58

git-forest é um excelente script perl que tenho usado por mais de um ano e eu quase não uso o comando git log diretamente mais.

Estas são algumas das coisas que adoro neste guião:
  • ele usa caracteres unicode para desenhar as linhas do grafo dando uma olhada mais contínua para as linhas do grafo.
  • pode combinar --reverse com o resultado do gráfico, o que não é possível com o comando regular git log.
  • ele usa git log internamente para pegue a lista de commits, para que todas as opções que você passa para git log também possam ser passadas para este script.

Tenho um nome falso que usa git-forest como se segue:

[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"

É assim que a saída se parece num terminal:

enter image description here

 50
Author: Tuxdude, 2015-08-18 16:45:52

Com base num programa de Graphviz que encontrei em uma resposta a uma pergunta relacionada , hackeei um programa em ruby que cria uma vista sumária de um repositório de git. Ele elucida toda a história linear e apenas mostra "interessantes" commits, ou seja, aqueles com múltiplos pais, múltiplos filhos, ou apontados por um ramo ou etiqueta. Aqui está um trecho do gráfico que ele gera para jquery:

jquery sample

Git-big-picture and BranchMaster are similar ferramentas que tentam mostrar apenas a estrutura de alto nível de um grafo, mostrando apenas como tags, ramificações, mesclamentos, etc. são parentes.

Esta questão tem mais algumas opções.

 41
Author: Matt McHenry, 2017-05-23 12:34:51
Depende do aspecto deles. Eu uso o gitx que faz imagens como esta:

simple plot

Pode comparar git log --graph vs. gitk numa junção de polvos de 24 vias (originalmente de http://clojure-log.n01se.net/date/2008-12-24.html):

24-way git octopus merge. Original URL was <code>http://lwn.net/images/ns/kernel/gitk-octopus.png</code>

 36
Author: Dustin, 2015-09-08 13:49:20

Eu escrevi uma ferramenta web para converter logs git em grafos SVG bonitos: Bit-Booster-Offline Commit Graph Drawing Tool

Enviar o resultado de git log --pretty='%h|%p|%d' directamente para a ferramenta e depois carregar no " grafo de transferência.svg " link.

A ferramenta é pura do lado do cliente, e por isso nenhum dos seus dados Git é partilhado com o meu servidor. Você também pode gravar o HTML + JS localmente e executá-lo usando "file://" URL ' s. verificado no Chrome 48 e Firefox 43 no Ubuntu 12.04.

Ele gera HTML que pode ser postado diretamente em qualquer página(incluindo o motor de blogspot blogging!). Dê uma olhada em alguns dos posts do blog aqui:

Http://bit-booster.blogspot.ca/

Aqui está uma imagem de um ficheiro HTML de exemplo gerado pela ferramenta:

Http://bit-booster.com/graph.html (a ferramenta)

 35
Author: G. Sylvie Davies, 2017-09-05 07:53:20
Adicionei três comandos personalizados: git tree, git stree e git vtree Vou examiná-los por essa ordem.
[alias]
    tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n         %C(black)[%cr]%C(reset)  %x09%C(black)%an: %s %C(reset)'

enter image description here

Com git stree e git vtree usei o bash para ajudar com a formatação.

[alias]
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(dim black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(black): %s%C(reset)'
    stree = !bash -c '"                                                                             \
        while IFS=+ read -r hash time branch message; do                                            \
            timelength=$(echo \"$time\" | sed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\");     \
            timelength=$(echo \"16+${#time}-${#timelength}\" | bc);                                 \
            printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\";          \
        done < <(git logx && echo);"'

git_stree


[alias]
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(dim black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(black): %s%C(reset)'
    vtree = !bash -c '"                                                                             \
        while IFS=+ read -r hash time branch message; do                                            \
            timelength=$(echo \"$time\" | sed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\");     \
            timelength=$(echo \"16+${#time}-${#timelength}\" | bc);                                 \
            printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\";  \
        done < <(git logx && echo);"'

git_vtree


EDIT: isto funciona com o git versão 1. 9 a. O valor da cor 'auto' está aparentemente a fazer a sua estreia nesta versão. É uma boa adição, porque os nomes dos ramos vão ter uma cor diferente. Isto torna tudo mais fácil. para distinguir entre ramos locais e remotos, por exemplo.

 32
Author: gospes, 2016-03-09 12:11:09

Para uma produção textual mais detalhada, por favor tente:

git log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short

Pode escrever pseudónimo em $HOME/.gitconfig

[alias]
    graph = log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short
 30
Author: kaoru, 2011-06-02 12:58:41

Gitg : um visualizador de repositório baseado no gtk, que é novo, mas interessante e útil
http://git.gnome.org/browse/gitg
Eu uso-o actualmente

 27
Author: saeedgnu, 2013-10-30 18:50:25

Embora às vezes eu use gitg , Volte sempre para a linha de comandos:

[alias]
    #quick look at all repo
    loggsa = log --color --date-order --graph --oneline --decorate --simplify-by-decoration --all
    #quick look at active branch (or refs pointed)
    loggs  = log --color --date-order --graph --oneline --decorate --simplify-by-decoration
    #extend look at all repo
    logga  = log --color --date-order --graph --oneline --decorate --all
    #extend look at active branch
    logg   = log --color --date-order --graph --oneline --decorate
    #Look with date
    logda  = log --color --date-order --date=local --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ad%Creset %C(auto)%d%Creset %s\" --all
    logd   = log --color --date-order --date=local --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ad%Creset %C(auto)%d%Creset %s\"        
    #Look with relative date
    logdra = log --color --date-order --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ar%Creset %C(auto)%d%Creset %s\" --all
    logdr = log --color --date-order --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ar%Creset %C(auto)%d%Creset %s\"  

    loga   = log --graph --color --decorate --all

    # For repos without subject body commits (vim repo, git-svn clones)
    logt  = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\"
    logta  = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\" --all        
    logtsa = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\" --all --simplify-by-decoration 
Como podem ver, é quase uma chave que salva os pseudónimos, com base em:
  • -- color: clear look
  • --graph: visualize os pais
  • -- date-order: most comprehensible look at repo
  • decora: quem é quem
  • --oneline: muitas vezes tudo o que você precisa saber sobre um commit
  • --simplify-by-decoration: basic for a first look (just tags, relevant merges, sucursais)
  • -- all: a gravar as teclas com todos os nomes alternativos com e sem esta opção
  • -- date=relativo (%ar): compreender a actividade na repo (por vezes, um ramo é poucos commits próximos do mestre, mas há meses atrás dele)

Ver na versão recente do git (1, 8, 5 ou mais) pode beneficiar de %C(auto) na decoração da substituição %D

A partir daqui, tudo o que precisas é de uma boa compreensão do gitrevisions para filtrar o que precisares (algo como o mestre..desenvolver, onde -- simplify-merges could help with long term branches)

A potência por trás da linha de comandos é a configuração rápida baseada nas suas necessidades (compreenda que um repo não é uma configuração única de registo de chaves, por isso é necessário adicionar --numstat, ou --raw, ou --name-status. Aqui o git log e os pseudónimos são rápidos, poderosos e (com o tempo) o gráfico mais bonito que você pode alcançar. Ainda mais, com o resultado mostrado por padrão através de um pager (dizer menos) você sempre pode pesquisar rapidamente dentro dos resultados. Não estás convencido? Podes. analisar sempre o resultado com projectos como gitgraph

 24
Author: albfan, 2015-12-18 10:44:59
Esta é a minha opinião sobre este assunto:

Imagem:

Screenshot

Utilização:

git hist - mostrar o histórico do ramo actual

git hist --all - mostrar o gráfico de todos os ramos (incluindo os comandos)

git hist master devel - mostrar a relação entre dois ou mais ramos

git hist --branches - Mostrar todos os ramos locais

Adicionar --topo-order para ordenar commits topologicamente, em vez de por data (por omissão neste também conhecido por)

Prestações:

  • parece simples --decorate, por isso com cores separadas para nomes de ramos diferentes
  • adiciona um e-mail committer
  • adiciona a data relativa e absoluta da persistência
  • O Sorts compromete-se por data

Configuração:

git config --global alias.hist "log --graph --date-order --date=short \
--pretty=format:'%C(auto)%h%d %C(reset)%s %C(bold blue)%ce %C(reset)%C(green)%cr (%cd)'"
 22
Author: drzymala, 2017-12-07 09:16:05

Tenho este git log pseudónimo em ~/.gitconfig para ver o histórico do Gráfico:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

Com isto no lugar, {[3] } irá produzir algo como:

enter image description here

In Git 2.12+ Você pode até personalizar as cores das linhas do gráfico usando o log.graphColors opção de configuração.

Quanto ao formato dos logs, é semelhante ao --oneline, com a adição do nome do autor (respeitando .mailmap) e a data relativa do autor. Note que a sintaxe %C(auto), que diz ao Git para usar as cores predefinidas para o hash de commit, etc. é suportado no Git >= 1.8.3.
 13
Author: Eugene Yarmash, 2017-08-17 07:27:08

GitGraph

Gera uma representação PNG ou SVG do histórico de commit do seu repositório Git.

Https://code.google.com/p/gitgraph

 12
Author: EddieG098, 2013-04-01 14:03:01

Muito ligeiramente alterado resposta fantástica do Slipp, Você pode usar seus pseudônimos para registrar apenas um ramo:

[alias]
lgBranch1 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
lgBranch2 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit
lg = !"git lg1"

Deixando de fora o --all você pode agora fazer

git lgBranch1 <branch name>

Ou mesmo

git lgBranch1 --all
 12
Author: Peter Ajtai, 2018-08-29 20:45:17
git -c core.pager='less -SRF' log --oneline --graph --decorate
Esta é a minha variação terminal, semelhante a muitas respostas aqui. Eu gosto de ajustar as bandeiras passadas para less para evitar embrulhar palavras.

example output

Configurei isto como um nome falso para acesso rápido, já que o comando é um pouco complicado.
 10
Author: Andy, 2016-01-06 03:13:02
Tentaste {[[3]}ou gitk --all? No entanto, ele não tem uma impressão/salvar img como função.
 9
Author: Adrian Panasiuk, 2009-06-29 13:14:48
Eu sugiro ... tig https://github.com/jonas/tig , uma ferramenta de linha de comando muito melhor para git.

Pode usar o homebrew para instalar o tig no macOS:

$ brew install tig
$ tig

enter image description here

 7
Author: nodejh, 2018-01-04 07:10:54

Tenta ditaa . Ele pode transformar qualquer diagrama ASCII em uma imagem. Embora não tenha sido projetado com Git branches em mente, fiquei impressionado com os resultados.

Fonte (ficheiro txt):

        +--------+
        | hotfix |
        +---+----+
            |
--*<---*<---*
       ^ 
       |
       \--*<---*
               |
           +---+----+
           | master |
           +--------+

Comando:

java -jar ditaa0_9.jar ascii-graph.txt
Resultado:

enter image description here

Ele também suporta cores de fundo, linhas tracejadas, diferentes formas e muito mais. Ver Os exemplos .

 6
Author: fracz, 2016-03-25 19:37:32
Há um git git git git git git git git git git git como uma das demos da biblioteca de gráficos web (Raphael).

A demonstração é estática, mas deve ser fácil o suficiente para pegar o código e trocar seus dados estáticos por um conjunto de dados ao vivo -- eu acho que é apenas git commit dados no formato JSON.

A demo está aqui. http://dmitrybaranovskiy.github.io/raphael/github/impact.html
 6
Author: Spudley, 2016-06-07 20:45:25

Eu não sei sobre uma ferramenta direta, mas talvez você possa hackear um script para exportar os dados para o formato de ponto e rendê-lo com graphviz.

 5
Author: Thomas, 2009-06-29 10:57:42

Para usuários OSX, fiz o @gospes exemplo e ligeiramente modificado para gsed (gnu-sed instalado via homebrew) e ajustado as cores (para trabalhar com um plano de fundo preto, não sei como exemplo original poderia render a forma como ele faz no exemplo, pois especifica o texto preto em um terminal com fundo preto).

[alias]
    # tree, vtree, stree support
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(bold black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(bold black): %s%C(reset)'
    tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n         %C(bold black)[%cr]%C(reset)  %x09%C(bold black)%an: %s %C(reset)'
    stree = !bash -c '" \
    while IFS=+ read -r hash time branch message; do \
        timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
        timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
        printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\"; \
    done < <(git logx && echo);"' | less -r
    vtree = !bash -c '" \
    while IFS=+ read -r hash time branch message; do \
      timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
      timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
      printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\"; \
    done < <(git logx && echo);"' | less -r

A chave para o OSX é instalar primeiro o gnu sed (que tem a opção-r). Mais facilmente feito com o homebrew, que não irá sobrepor o system-installed sed, but will instead install gnu sed as "gsed". Espero que isso ajude @SlippD.Thompson que comentou acima sobre o OSX não funcionar.

 4
Author: markeissler, 2017-05-23 12:34:51
Olhando para esta conversa, tentei usar o meu favorito.git-cola & git-dag. Executando View->DAG... de git-cola e substituindo Log: master -- com --all mostra um gráfico bonito com todos os ramos.
 2
Author: Aleksey Kontsevich, 2018-03-22 01:50:53

Alguns nomes falsos em ~/.Oh-my-zsh/plugins/git / git.Forum.zsh

gke='\gitk --all $(git log -g --pretty=%h)'
glg='git log --stat'
glgg='git log --graph'
glgga='git log --graph --decorate --all'
glgm='git log --graph --max-count=10'
glgp='git log --stat -p'
glo='git log --oneline --decorate'
glog='git log --oneline --decorate --graph'
gloga='git log --oneline --decorate --graph --all'
glol='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'
glola='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all'
 2
Author: shuaihanhungry, 2018-07-12 11:46:53

Para além da resposta de 'Slipp D. Thompson', proponho que acrescente este pseudónimo à mesma decoração, mas numa única linha, commit:

git config --global alias.tre "log --graph --decorate --pretty=oneline --abbrev-commit --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'"
 1
Author: Lyes CHIOUKH, 2018-03-06 13:34:59