Repositório e histórico

O grafo de commits

Branches, merges e merges polvo desenhados direito, no claro ou no escuro. A renderização é por janela, então um repositório com cem mil commits rola como um com cem.

Grafo de commits, claro Grafo de commits, escuro

Se movimentando

  • ↑ ↓ (ou j k) andam com a seleção.
  • ⌘/Ctrl-clique alterna um commit numa seleção múltipla; ⇧-clique pega um intervalo. Com vários selecionados, clique com o botão direito para fazer cherry-pick deles na branch atual, dar squash numa sequência contígua, exportar um patch combinado, ou copiar os SHAs.
  • Commits que chegaram no seu último fetch ou pull são sinalizados como novos. Os que ainda não entraram no branch atual ficam levemente translúcidos até um pull trazê-los.
  • Clique com o botão direito num commit para Amend, Desfazer, Resetar para o commit… e Ver no GitHub, além de checkout, cherry-pick, revert, branch, tag e cópia. Ações inseguras continuam visíveis e se desabilitam.

Fazendo o grafo mostrar o que você quer

  • O foco do grafo decide quanto histórico é desenhado — Configurações → Temas → Grafo, ou o menu da engrenagem no cabeçalho do grafo. Tudo desenha tudo; Histórico linear (first-parent) deixa só o tronco; Ocultar ramos mesclados mantém o tronco mais os ramos ainda não mesclados; Modo solo mantém o seu ramo, os ramos favoritos e o ramo padrão.

    Ele só filtra o que o log já carregou. Ocultar ramos mesclados confia na resposta do próprio git a "já contido no ramo atual", então trocar de ramo muda o que some — e mantém todo commit que ainda tenha uma tag ou uma ref que ele não reconheça apontando para ele, que é justamente o que um ramo apagado deixa para trás. Histórico linear e Modo solo são mais brutos: uma tag ou um stash num commit que eles escondem some junto.

  • Filtrar por caminho: clique com o botão direito num arquivo ou pasta → Filtrar grafo por este caminho, e só os commits que o tocaram continuam acesos.

Grafo filtrado até um único caminho

  • Colunas: mostre, esconda, redimensione e reordene as colunas de branch, mensagem, autor, data, SHA, assinatura e deploy.
  • Estilo: Configurações → Temas → Grafo — paleta de faixas (8 nativas, personalizada ou gerada por IA), estilo de canto, densidade das linhas e espessura dos traços, com uma pré-visualização ao vivo em mini-grafo.

Configurações de estilo do grafo com pré-visualização ao vivo

Onde os stashes sentam

Um stash é desenhado como uma linha própria, pendurado no commit de onde foi tirado num esporão tracejado para não deslocar o tronco. Ele entra na linha logo acima desse commit pai, não no lugar que o próprio carimbo de tempo lhe daria.

O marcador é uma caixa de arquivo numa moldura pontilhada — o mesmo símbolo de arquivo da lista de stashes, da paleta de comandos e do cabeçalho de detalhes, para o grafo nomear um stash como o resto do app. A moldura pontilhada é o que o separa de um commit: sentado uma linha acima do pai, a forma precisa carregar «isto não faz parte do ramo».

Um stash quase sempre é mais novo que o commit em que se senta, então ordenar por data o faria subir entre commits sem relação e esticaria o cabo pelo meio do grafo. O pai é a única linha com que um stash realmente se relaciona, então ele fica ao lado.

O limite: um stash cujo commit pai não está na janela carregada — podado, ou além do fim do log — não tem âncora, e volta à ordem por data até o pai carregar. Histórico linear e Modo solo descartam um stash cujo pai descartam, como acima.

Detalhes do commit

Selecionar um commit mostra os arquivos alterados dele (em árvore ou plano), autor, SHA, coautores e a assinatura. O cabeçalho acima da lista de arquivos parte a contagem por tipo, nas mesmas cores dos glifos nas linhas. Passe o cursor para o total. Referências #123 e @menções viram links automáticos para o seu host.

A lista de arquivos se seleciona em grupo com os gestos de sempre (clique com ⌘/Ctrl, clique com ⇧, ⇧+↑/↓). Clique com o botão direito na seleção → Restaurar {n} arquivos na árvore de trabalho pega esses arquivos exatamente como este commit os tinha: depois de uma única confirmação sobrescreve as cópias de trabalho, sem tocar em HEAD nem no índice.

Percorrendo os detalhes de um commit

Veja também: Blame e histórico do arquivo · Busca · Máquina do tempo

Melhorar esta tradução no GitHub