Два вопроса:
- Как показать первые 10 коммитов в git от начала до конца. (без отделения)
- Как указать индекс фиксации и зарегистрировать его. (покажите второй или третий)
Я знаю, что git использует parent для связывания коммита, легко регистрировать коммит от начала до конца. подобно:git log HEAD~10
Но мне нужно запросить от начала до конца, возможно ли это?
Ответы:
Просто зарегистрируйте все в однострочном формате и следите за выводом:
источник
git rev-list HEAD | tail -n 10
чтобы получить список из 10 идентификаторов, которые затем можно отобразить в любом формате, который вам нравится (не ограничиваясь однострочным методом).tail
кажется, теряет красивую окраску, которую я получаю в моей консоли git. Передача параметра,git log --oneline -10
как в другом ответе, работает так, как я ожидал.Показывает 10 последних коммитов, соответствующих спецификации ревизии (отсутствие спецификации означает «все коммиты»).
См. Справочную страницу:
раздел
Commit Limiting
источник
tail
доступности на вашей платформе.first
10, а неlatest
.Вот мой подход,
Чтобы получить первые 10 коммитов:
-n - число
Дополнительно Чтобы получить следующие 10 коммитов, пропустите первые 10:
источник
Чтобы получить последние 10 коммитов:
Чтобы получить их в порядке от самого старого к новому:
Обратите внимание: если есть слияния, это может показать более 10 коммитов; добавьте,
--first-parent
если вы хотите пройти только через первого родителя каждой ветви.Для получения более подробной информации см. Документацию для
git rev-list
.Изменить: вы уже получили полезный ответ выше, чтобы «показать коммиты в начале истории» (опять же, см. Предупреждения о нескольких неподключенных DAG фиксации в репо). Но вы также можете сделать, например:
а также:
в зависимости от того, в каком порядке вы хотите получить результаты.
источник
лучший результат достигается при сочетании обоих лучших ответов:
источник
lkj = log --pretty=oneline --abbrev-commit -10
. Теперь я понимаю, что это не отвечает на вопрос ОП, но я пришел сюда в поисках простого переключателя чисел.Просто регистрируйте все в обратном порядке -1 означает перечисление одного журнала
источник
я бы использовал ниже простую команду синтаксиса;
источник
Потому что ... подробнее: p
По (без ответвления) вы могли бы спрашивать о
reflog
цепочке предков, а не о какой-либо конкретной. Следующее не имеет ничего общего с веткой, в которой вы находитесь.git log -g --pretty=oneline | tail -10
-g
is--walk-reflogs
Вместо того, чтобы идти по цепочке предков фиксации, пройдитесь по записям журнала reflog.q|cut -d ' ' -f 2|tr -d ':' > log
в журнал только индекс фиксации reflog.Ниже будут показаны самые ранние предки текущей извлеченной ветви.
git log --reverse --pretty=oneline | head -10 | cat -n
--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
не работает так, как вам нужно. ( Я полагаю, это должно быть некоммутативным, чтобы дать вам возможность выбирать первые 10 коммитов в обратном порядке или последние 10 коммитов 🤪)источник