Duas questões:
- Como mostrar os primeiros 10 commit no git do começo ao fim. (sem filial)
- 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?
Respostas:
Basta registrar tudo em um formato de linha e seguir a saída:
fonte
git rev-list HEAD | tail -n 10
para obter os 10 IDs para listar, que você pode mostrar no formato que desejar (não limitado ao método de uma linha).tail
parece perder a bela coloração que recebo em meu console git. Passar um parâmetro comogit log --oneline -10
na outra resposta funciona como eu esperava.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:
seção
Commit Limiting
fonte
tail
estar disponível em sua plataforma.first
10, não olatest
.Aqui está minha abordagem,
Para obter os primeiros 10 commits:
-n é o número
Adicional Para obter os próximos 10 commit, ignore os 10 primeiros:
fonte
Para obter os últimos 10 commits:
Para colocá-los na ordem do mais antigo para o mais recente:
Observe que se houver mesclagens, isso pode mostrar mais de 10 confirmações; adicione
--first-parent
se 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:
e:
dependendo da ordem em que você deseja os resultados.
fonte
o melhor resultado vem com a combinação das duas melhores respostas:
fonte
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.Basta registrar tudo reverso -1 significa listar um registro
fonte
eu usaria o comando de sintaxe simples abaixo;
fonte
Porque ... mais detalhes: p
Por (sem ramificação), você pode estar perguntando mais sobre a
reflog
cadeia 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
-g
é--walk-reflogs
Em vez de percorrer a cadeia de ancestralidade do commit, percorra as entradas de reflog.|cut -d ' ' -f 2|tr -d ':' > log
para 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
--reverse
Produza os commits na ordem reversa.-n 10
ou-10
porque quebra--reverse
cat -n
adiciona números de linha (índice de confirmação?)fonte
Caso alguém queira mais do que apenas um log de uma linha do git:
onde o
11
no final deve ser definido para1
mais 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 🤪)fonte