logar os primeiros 10 no git


89

Duas questões:

  1. Como mostrar os primeiros 10 commit no git do começo ao fim. (sem filial)
  2. Como especificar o índice de confirmação e registrá-lo. (mostrar o segundo ou terceiro)

Eu sei que git use parent para vincular o commit, é fácil registrar o commit do início ao fim. gostar:git log HEAD~10

Mas preciso consultar do início ao fim, é possível?



role para @kostix answer
Muhammad Umer

Respostas:


59

Basta registrar tudo em um formato de linha e seguir a saída:

git log  --pretty=oneline | tail -n 10 

Ótimo! É isso que estou procurando. Tks @CharlesB.
yohan zhou

3
Ou use git rev-list HEAD | tail -n 10para obter os 10 IDs para listar, que você pode mostrar no formato que desejar (não limitado ao método de uma linha).
torek

15
tailparece perder a bela coloração que recebo em meu console git. Passar um parâmetro como git log --oneline -10na outra resposta funciona como eu esperava.
James Hulse

4
Este é claramente o jeito Unix hard-core, lol. Por favor, veja a resposta de @kostix.
9301293

1
A desvantagem desse método é que só consigo ver meus commits enviados.
Jack '

245
git log -10

Mostraria os 10 últimos commits que correspondem à especificação de revisão (uma especificação ausente significa "todos os commits").

Veja a página de manual:

git help log

seção Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.

6
simples e não depende de tailestar disponível em sua plataforma.
tenpn

8
& não mexe com a formatação / coloração git. Esta deve ser a resposta aceita x100
kuzyn 01 de

10
Não o que o operador queria: ele queria o first10, não o latest.
Timo

1
@Timo, possivelmente sim, mas a questão conforme declarada está aberta para interpretação, e muitas pessoas parecem acabar votando em minha resposta apenas por causa dessas diferenças abertas. Então, embora tecnicamente concorde com você, vamos mantê-lo como está, suponho ;-) Dentre as sugestões tecnicamente corretas, gosto mais do comentário de torek à resposta aceita.
kostix

@kostix "Como mostrar os primeiros 10 commit no git do começo ao fim" não está "aberto a interpretação" até onde eu estou preocupado. Obviamente, está pedindo os primeiros 10 commits, não os últimos .
Bobby Jack

29

Aqui está minha abordagem,

Para obter os primeiros 10 commits:

git log -n 10

-n é o número

Adicional Para obter os próximos 10 commit, ignore os 10 primeiros:

git log --skip=10 -n 10

Acho que essa deve ser a resposta aceita. Usar cauda fará com que --graph pare de funcionar em git log
relief.melone

Esta deve ser a resposta aceita. funciona como um encanto para mim
Doogle

você perde a cor da fonte no console usando cauda também. esta é a resposta certa
CESCO de

14

Para obter os últimos 10 commits:

git log HEAD~10..HEAD

Para colocá-los na ordem do mais antigo para o mais recente:

git log --reverse HEAD~10..HEAD

Observe que se houver mesclagens, isso pode mostrar mais de 10 confirmações; adicione --first-parentse quiser apenas atravessar o primeiro pai de cada ramo.

Para obter mais detalhes, consulte a documentação do git rev-list.


Edit: Você já obteve uma resposta útil acima para "mostrar commits perto do início do histórico" (novamente, veja as advertências sobre vários DAGs de commit não conectados em um repo). Mas você também pode fazer, por exemplo:

git log --no-walk `git rev-list HEAD | tail -n 10`

e:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

dependendo da ordem em que você deseja os resultados.


Obrigado pela sua resposta. Mas eu não preciso dos últimos 10 commits, mas dos primeiros. Para ser mais específico, se o commit for ABCDEFG (HEAD). Como registrar o ABC e como registrar o C pelo índice 2?
yohan zhou

Oh! Não há garantia de que haja um único "primeiro commit", mas se houver, consulte o link @CharlesB adicionado.
Torek em

O caminho pode ser trabalho. alguma forma natural? git log --pretty = oneline | wc -l git log HEAD ~ <O número menos um ou índice>
yohan zhou

Obrigado pela resposta. Isso é o que eu precisava para evitar as opções de estilo '-10' em meus aliases git. que aceitam argumentos numéricos.
vicTROLLA

11

o melhor resultado vem com a combinação das duas melhores respostas:

git log --pretty=oneline -10

1
Obrigado, eu uso isso como um alias do git para exibir rapidamente os commits recentes sem preencher meu terminal. Liguei para o alias lkj = log --pretty=oneline --abbrev-commit -10. Agora percebo que não responde à pergunta do OP, mas vim aqui procurando a troca de número simples.
Paul Rougieux

4

Basta registrar tudo reverso -1 significa listar um registro

git log  --reverse -1

2

eu usaria o comando de sintaxe simples abaixo;

git log -10 --oneline

1
Acho que esta é a maneira mais eficiente!
Nishant

0

Porque ... mais detalhes: p

  1. Como mostrar os primeiros 10 commit no git do começo ao fim. (sem filial)
  2. Como especificar o índice de confirmação e registrá-lo. (mostrar o segundo ou terceiro)

Por (sem ramificação), você pode estar perguntando mais sobre a reflogcadeia de ancestrais do que sobre qualquer. O seguinte não tem nada a ver com o branch em que você está.

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -g é --walk-reflogs Em vez de percorrer a cadeia de ancestralidade do commit, percorra as entradas de reflog.
  • adicione |cut -d ' ' -f 2|tr -d ':' > logpara registrar apenas o índice de confirmação de reflog.

O seguinte mostrará os primeiros ancestrais do branch atualmente verificado.

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse Produza os commits na ordem reversa.
  • Não pode usar simplesmente -n 10ou -10porque quebra--reverse
  • cat -n adiciona números de linha (índice de confirmação?)


0

Caso alguém queira mais do que apenas um log de uma linha do git:

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

onde o 11no final deve ser definido para 1mais do que o número de commits que você deseja.

Como aqui indica git log --reverse -n 10, não funciona como você precisa. ( Suponho que precisaria ser não comutativo para lhe dar a capacidade de escolher os primeiros 10 commits na ordem reversa ou os últimos 10 commits 🤪)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.