Подтвердить что ты не робот

Log first 10 in git

Два вопроса:

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

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

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

4b9b3361

Ответ 1

Просто зарегистрируйте все в одном линейном формате и задержите вывод:

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

Ответ 2

git log -10

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

См. man-страницу:

git help log

раздел Commit Limiting

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

Ответ 3

Здесь мой подход,

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

git log -n 10

-n - число

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

git log --skip=10 -n 10

Ответ 4

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

git log HEAD~10..HEAD

Чтобы получить их в старейшем и новейшем порядке:

git log --reverse HEAD~10..HEAD

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

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


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

и

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

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

Ответ 5

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

git log  --reverse -1

Ответ 6

лучший результат достигается сочетанием обоих лучших ответов:

git log --pretty=oneline -10

Ответ 7

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

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

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

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

<sha> [email protected]{###}: action: summary (old)
<sha> [email protected]{###}: action: summary (older)
...
<sha> [email protected]{###}: action: summary (oldest)
  • -g is --walk-reflogs Вместо того, чтобы прогуливать цепочку родословной фиксации, перейдите в reflog entries.q
  • добавить |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 добавляет номера строк (индекс фиксации?)

Ответ 8

В случае, если кто-то хочет больше, чем просто git однострочный журнал:

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

где 11 в конце должен быть установлен на 1 больше, чем количество коммитов вы хотите.

Как здесь git log --reverse -n 10, git log --reverse -n 10 не работает так, как вам нужно. (Я полагаю, что он должен быть некоммутативным, чтобы дать вам возможность выбрать первые 10 коммитов в обратном порядке или последние 10 коммитов 🤪)