git-commit-graph
Название
git-commit-graph — запись и проверка файлов графа коммитов Git
Краткое описание
git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
[--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
<split-options> Описание
Управление сериализованным файлом графа коммитов.
Параметры
- --object-dir
-
Использовать указанный каталог для размещения файлов пакетов и файла графа коммитов. Этот параметр позволяет указать расположение альтернативного хранилища, в котором есть только каталог объектов, а не полный каталог
.git. Ожидается, что файл графа коммитов находится в каталоге <dir>/info, а файлы пакетов — в каталоге <dir>/pack. Если каталог не удалось преобразовать в абсолютный путь или он не соответствует ни одному известному каталогу объектов,gitcommit-graph... завершится с ненулевым кодом. - --progress
- --no-progress
-
Явно включить или отключить отображение хода выполнения. Если не указан ни один из параметров, ход выполнения отображается, если стандартный поток ошибок подключён к терминалу.
Команды
- write
-
Записать файл графа коммитов на основе коммитов, найденных в файлах пакетов. Если параметр конфигурации
core.commitGraphотключён, эта команда выведет предупреждение и завершится успешно, не записав файл графа коммитов.С параметром
--stdin-packsсоздать новый граф коммитов, обходя объекты только в указанных индексах пакетов. (Нельзя использовать вместе с--stdin-commitsили--reachable.)С параметром
--stdin-commitsсоздать новый граф коммитов, начиная обход коммитов с указанных в stdin коммитов, представленных списком OID в шестнадцатеричном формате, по одному OID в строке. OID, разрешающиеся в объекты, не являющиеся коммитами (непосредственно или после снятия тегов), игнорируются без уведомления. Некорректно сформированные или несуществующие OID приводят к ошибке. (Нельзя использовать вместе с--stdin-packsили--reachable.)С параметром
--reachableсоздать новый граф коммитов, начиная обход коммитов со всех ссылок. (Нельзя использовать вместе с--stdin-commitsили--stdin-packs.)С параметром
--appendвключить все коммиты, присутствующие в существующем файле графа коммитов.С параметром
--changed-pathsвычислить и записать сведения о путях, изменённых между коммитом и его первым родителем. Эта операция может занять некоторое время в больших репозиториях. Она значительно ускоряет получение истории каталога или файла с помощьюgitlog--<path>. Если этот параметр указан, при последующих записях графа коммитов будет автоматически предполагаться, что он также нужен. Используйте--no-changed-paths, чтобы прекратить хранение этих данных. Параметр--changed-pathsподразумевается при настройкеcommitGraph.changedPaths=true.С параметром
--max-new-filters=<n> создать не болееnновых фильтров Блума (если указан параметр--changed-paths). Если значениеnравно-1, ограничение не применяется. В это ограничение входят только коммиты, присутствующие в новом слое. Чтобы ретроспективно вычислить фильтры Блума для предыдущих слоёв, рекомендуется использовать--split=replace. Переопределяет настройкуcommitGraph.maxNewFilters.С параметром
--split[=<strategy>] записать граф коммитов в виде цепочки из нескольких файлов графа коммитов, хранящихся в каталоге <dir>/info/commit-graphs. Слои графа коммитов объединяются в соответствии со стратегией и другими параметрами разделения. Новые коммиты, ещё не включённые в граф коммитов, добавляются в новый файл «вершины». Этот файл объединяется с существующим файлом, если выполняются следующие условия слияния:-
Если указан параметр
--split=no-merge, слияние не выполняется, а остальные параметры игнорируются.--split=replaceзаменяет существующую цепочку новой. Если указан только--split, учитываются остальные параметры. (Обратите внимание: слияние цепочки графов коммитов заменяет существующую цепочку цепочкой длины 1, в которой первый и единственный инкрементальный файл содержит весь граф.) -
Если параметр
--size-multiple=<X> не указан, считать, чтоXравно 2. Если в новом файле вершины будетNкоммитов, в предыдущем файле вершины —Mкоммитов, аX, умноженное наN, большеM, вместо этого объединить оба файла в один. -
Если параметр
--max-commits=<M> указан со значениемM, являющимся положительным целым числом, и в новом файле вершины будет болееMкоммитов, вместо этого объединить новую вершину с предыдущей.Наконец, если параметр
--expire-time=<datetime> не указан, считать, чтоdatetime— это текущее время. После записи разделённого графа коммитов удалить все неиспользуемые файлы графа коммитов, время изменения которых раньшеdatetime.
-
- verify
-
Прочитать файл графа коммитов и проверить его содержимое по базе объектов. Используется для проверки на наличие повреждённых данных.
С параметром
--shallowпроверять только вершину цепочки разделённых графов коммитов.
Примеры
-
Записать файл графа коммитов для упакованных коммитов в локальном каталоге
.git.$ git commit-graph write
-
Записать файл графа коммитов, дополнив текущий файл графа коммитами из <pack-index>.
$ echo <pack-index> | git commit-graph write --stdin-packs
-
Записать файл графа коммитов, содержащий все достижимые коммиты.
$ git show-ref -s | git commit-graph write --stdin-commits
-
Записать файл графа коммитов, содержащий все коммиты из текущего файла графа коммитов, а также коммиты, достижимые из
HEAD.$ git rev-parse HEAD | git commit-graph write --stdin-commits --append
Предостережения
Наличие объектов-заменителей или подстановок коммитов отключает чтение и запись графа коммитов. См. git-replace[1].
Настройка
Всё содержимое этого раздела ниже данной строки выборочно включено из документации git-config[1]. Оно совпадает с содержимым соответствующего раздела:
- commitGraph.generationVersion
-
Задаёт версию номера генерации, используемую при записи или чтении файла графа коммитов. Если указана версия 1, исправленные даты коммитов не будут записываться или считываться. По умолчанию используется версия 2.
- commitGraph.maxNewFilters
-
Задаёт значение по умолчанию для параметра
--max-new-filtersкомандыgitcommit-graphwrite(см. git-commit-graph[1]). - commitGraph.changedPaths
-
Если значение равно true, команда
gitcommit-graphwriteпо умолчанию вычисляет и записывает фильтры Блума для изменённых путей, что эквивалентно передаче параметра--changed-paths. Если значение равно false или не задано, фильтры Блума для изменённых путей записываются во время выполнения командыgitcommit-graphwriteтолько в том случае, если эти фильтры уже есть в текущем файле графа коммитов. Это соответствует поведению командыgitcommit-graphwriteпо умолчанию, без параметра--[no-]changed-paths. Чтобы перезаписать файл графа коммитов без фильтров, используйте параметр--no-changed-paths. Параметр командной строки--[no-]changed-pathsвсегда имеет приоритет над этой настройкой. По умолчанию не задано. - commitGraph.readChangedPaths
-
Устарел. Эквивалентен commitGraph.changedPathsVersion=-1, если значение равно true, и commitGraph.changedPathsVersion=0, если значение равно false. (Если также задан параметр commitGraph.changedPathVersion, приоритет имеет commitGraph.changedPathsVersion.)
- commitGraph.changedPathsVersion
-
Задаёт версию фильтров Блума для изменённых путей, которые Git будет считывать и записывать. Может принимать значения -1, 0, 1 или 2. Обратите внимание: значения больше 1 могут быть несовместимы со старыми версиями Git, которые ещё не поддерживают эти версии. Будьте осторожны при работе в среде с разными версиями.
По умолчанию — -1.
Если задано значение -1, Git будет использовать версию фильтров Блума для изменённых путей, имеющуюся в репозитории; если таких фильтров нет, будет использоваться версия 1.
Если задано значение 0, Git не будет считывать фильтры Блума и будет записывать фильтры Блума версии 1, когда ему будет указано выполнить запись.
Если задано значение 1, Git будет считывать только фильтры Блума версии 1 и записывать фильтры Блума версии 1.
Если задано значение 2, Git будет считывать только фильтры Блума версии 2 и записывать фильтры Блума версии 2.
Дополнительные сведения см. в git-commit-graph[1].
Формат файла
commit-graph
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-commit-graph