git-log Git branch branch





15 Answers

Muitas das respostas aqui são ótimas, mas para aqueles que querem apenas uma simples resposta de uma linha ao ponto sem ter que configurar aliases ou algo extra, aqui está:

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

Nem todo mundo estaria fazendo um git log o tempo todo, mas quando você precisar, lembre-se:

" Um Cachorro " = git log - a - d - ecorate - o neline - g rap

git git-log

Eu vi alguns livros e artigos terem alguns gráficos muito bonitos de git branches e commits. Como posso criar imagens imprimíveis de alta qualidade do histórico do git?




Gitgraph.js permite desenhar lindos ramos sem um repositório. Basta escrever um código Javascript que configure seus branches e commits e renderize-o 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);

ou com template metro :

ou com mensagens de confirmação, autores e tags:

Teste com JSFiddle .

Gere-o com Git Grapher by @bsara.




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

Está ativamente desenvolvido (a partir de 2012). Ele permite classificar os commits (nós do gráfico) cronologicamente ou topologically e ocultar commits que não levam a um branch selecionado.

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

Capturas de tela de amostra, mostrando os repositórios linux-git e linux-2.6:




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

E forneça um plugin jQuery que facilite o uso.

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

Visualizar:




Baseado em um script Graphviz eu encontrei em uma resposta para uma questão relacionada , eu hackeei um script ruby que cria uma visão resumida de um repositório git. Elimina todo o histórico linear e apenas mostra commits "interessantes", ou seja, aqueles com vários pais, vários filhos ou apontados por um branch ou tag. Aqui está um trecho do gráfico que gera para jquery :

git-big-picture e BranchMaster são ferramentas similares que tentam mostrar apenas a estrutura de alto nível de um gráfico, exibindo apenas como as tags, ramificações, mesclagens, etc. estão relacionadas.

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




Eu escrevi uma ferramenta web para converter git logs em bonitos gráficos SVG: bit-booster.com/graph.html

Carregue a saída de git log --pretty='%h|%p|%d' diretamente na ferramenta e depois clique no link "download graph.svg".

A ferramenta é do lado do cliente e, portanto, nenhum dos seus dados do Git é compartilhado com o meu servidor. Você também pode salvar o HTML + JS localmente e executá-lo usando URLs "file: ///". 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 blogspot blogging engine!). Dê uma olhada em alguns dos posts aqui:

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

Aqui está uma captura de tela de um arquivo HTML de amostra gerado pela ferramenta:

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




Para uma saída textual mais detalhada, tente:

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

Você pode escrever o alias em $ HOME / .gitconfig

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



Embora às vezes eu use o gitg , volte sempre para a linha de comando:

[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 você pode ver, há quase um alias de salvamento de pressionamento de tecla, com base em:

  • - cor: aparência clara
  • --graph: visualize os pais
  • --date-order: olhar mais compreensível em repo
  • --decorar: quem é quem
  • --oneline: Muitas vezes tudo que você precisa saber sobre um commit
  • --simplify-by-decoration: básico para um primeiro olhar (apenas tags, fusões relevantes, filiais)
  • --all: salvar pressionamentos de tecla com todo o alias com e sem essa opção
  • --date = relative (% ar): Entenda a atividade no repositório (às vezes, uma ramificação é pouco comprometida perto do mestre, mas meses atrás dele)

Veja na versão recente do git (1.8.5 e acima) você pode se beneficiar de% C (auto) no espaço reservado para decorar% d

A partir daqui, tudo o que você precisa é de um bom entendimento de gitrevisions para filtrar o que você precisa (algo como master..develop, onde --simplify-merge poderia ajudar com branches de longo prazo)

O poder por trás da linha de comando é a configuração rápida com base em suas necessidades (entender que um repo não é uma configuração de registro de chave única, portanto, adicionar --numstat ou --raw ou --name-status às vezes é necessário. e aliases são rápidos, poderosos e (com o tempo) o gráfico mais bonito que você pode alcançar.Mais ainda, com a saída mostrada por padrão através de um pager (digamos menos) você pode sempre pesquisar rapidamente dentro dos resultados.Não está convencido? com projetos como o gitgraph




Muito ligeiramente aprimorando resposta impressionante de Slipp , você pode usar seus aliases 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 fazer agora

git lgBranch1 <branch name>

ou até mesmo

git lgBranch1 --all






Você tentou gitk ou gitk --all ? No entanto, ele não possui uma função imprimir / salvar img.




Tente ditaa . Pode transformar qualquer diagrama ASCII em uma imagem. Embora não tenha sido projetado com ramificações Git em mente, fiquei impressionado com os resultados.

Fonte (arquivo txt):

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

Comando:

java -jar ditaa0_9.jar ascii-graph.txt

Resultado:

Também suporta cores de fundo, linhas tracejadas, formas diferentes e muito mais. Veja ditaa .




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




alguns aliases em ~ / .oh-my-zsh / plugins / git / git.plugin.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'



Olhando para esta conversa tentei usar o meu favorito git-cola& git-dag. Correndo View->DAG...de git-colae substituir Log: master -- com --allmostra o gráfico bonito com todos os ramos.




Related


Tags

git   git-log