войти в первую 10 в Git


два вопроса:

  1. как показать первые 10 фиксаций в git от начала до конца. (нет ветки)
  2. Как указать индекс фиксации и зарегистрировать его. (покажите второй или третий)

Я знаю, что git использует parent для связывания фиксации, легко регистрировать фиксацию от конца до начала. например:git log HEAD~10

но мне нужно запросить от начала до конца, это возможно?

6 51

6 ответов:

просто войти все с одной строки формата и хвост вывода:

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

покажет 10 последних коммитов, соответствующих спецификации ревизии (отсутствующая спецификация означает "все коммиты").

смотрите manpage:

git help log

раздел Commit Limiting

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

чтобы получить последние 10 коммитов:

git log HEAD~10..HEAD

чтобы получить их в порядке от старого до Нового:

git log --reverse HEAD~10..HEAD

обратите внимание, что если есть слияния, это может показать более 10 коммитов; добавить --first-parent если вы хотите только пройти через первый родитель каждой ветви.

для получения более подробной информации см. документацию для git rev-list.


Edit: вы уже получили полезный ответ выше ,чтобы "показать коммиты в начале истории" (опять же, см. предостережения о несколько несвязных групп DAG фиксации в репо). Но вы также можете сделать, например,:
git log --no-walk `git rev-list HEAD | tail -n 10`

и:

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

в зависимости от того, какой заказ вы хотите получить результаты.

вот мой подход,

чтобы получить первые 10 коммитов:

git log -n 10

- n-это число

дополнительные Чтобы получить следующие 10 фиксации пропустить первые 10 :

git log --skip=10 -n 10

просто войти все обратное -1 означает список один журнал

git log  --reverse -1

потому что... более подробно :п

  1. как показать первые 10 фиксаций в git от начала до конца. (нет ветка)
  2. Как указать индекс фиксации и зарегистрировать его. (показать второй или третий)

By (без ветки), вы можете спросить о reflog а не любой заданной цепи родословной. Следующее не имеет ничего общего с веткой, которой вы являетесь на.

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 вместо того, чтобы гулять фиксации цепи родословной, ходить записей reflog.вопрос
  • добавить |cut -d ' ' -f 2|tr -d ':' > log войти только reflog совершить индекса.

ниже будут показаны самые ранние предки текущей проверенной ветви.

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

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse вывод коммитов в обратном порядке.
  • не могу использовать просто -n 10 или -10, так как это нарушает --reverse
  • cat -n добавляет номера строк (индекс фиксации?)