Ответ 1
Просто зарегистрируйте все в одном линейном формате и задержите вывод:
git log --pretty=oneline | tail -n 10
Два вопроса:
Я знаю, что git использует родительский элемент для привязки фиксации, легко записать фиксацию с начала и конца.
например: git log HEAD~10
Но мне нужно запросить от начала до конца, возможно ли это?
Просто зарегистрируйте все в одном линейном формате и задержите вывод:
git log --pretty=oneline | tail -n 10
git log -10
Покажет 10 последних коммитов, соответствующих спецификации ревизии (отсутствующая спецификация означает "все коммиты" ).
См. man-страницу:
git help log
раздел Commit Limiting
-<number>, -n <number>, --max-count=<number>
Limit the number of commits to output.
Здесь мой подход,
Чтобы получить первые 10 коммитов:
git log -n 10
-n - число
Дополнительные Чтобы получить следующие 10 команд, пропустите первые 10:
git log --skip=10 -n 10
Чтобы получить последние 10 коммитов:
git log HEAD~10..HEAD
Чтобы получить их в старейшем и новейшем порядке:
git log --reverse HEAD~10..HEAD
Обратите внимание, что если есть слияния, это может показаться более 10 коммитов; добавьте --first-parent
, если вы хотите только пройти через первого родителя каждой ветки.
Более подробно см. документацию для git rev-list
.
git log --no-walk `git rev-list HEAD | tail -n 10`
и
git log --no-walk `git rev-list --reverse HEAD | head -n 10`
в зависимости от того, какой заказ вы хотите получить.
Просто зарегистрируйте все обратное -1 означает перечислить один журнал
git log --reverse -1
лучший результат достигается сочетанием обоих лучших ответов:
git log --pretty=oneline -10
Потому что... подробнее: p
От (без ветки), вы можете спрашивать о 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
добавляет номера строк (индекс фиксации?)В случае, если кто-то хочет больше, чем просто 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 коммитов 🤪)