При использовании пользователями Git в качестве системы контроля версий, могут возникнуть ситуации, когда большие файлы попадают в историю коммитов. Из-за распределённой природы Git и его основы на снимках, размер хранилища может существенно увеличиться. Инструмент git-analyze помогает пользователям выявить, какие коммиты внесли файлы, превышающие заданный объём. Инструмент git-rollback позволяет откатить изменения до указанной точки коммита, сохранив текущее состояние рабочего каталога без изменений, что позволяет пользователям создать новые коммиты.
Зависимости Windows:
Зависимости Unix:
git clone https://gitee.com/oscstudio/git-analyze.git
Сборка для Windows:
mkdir build
cd build
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
cpack
Далее откройте установочный пакет. Важно отметить, что Ninja плохо поддерживает возможности cmake ExternalProject
, поэтому сборка может завершиться ошибкой.
Сборка для Unix:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. -DCMAKE_INSTALL_PREFIX=/opt/oscstudio
make
make install
ОБЩИЕ СВЕДЕНИЯ: Инструменты анализа Git
Использование: git-analyze [параметры]... [--] [<pathspec>...] [<refs|branches>...]
ПАРАМЕТРЫ:
-h [--help] вывод информации о помощи и выход
--limitsize установка ограничения размера анализируемого объекта
--warnsize установка предупредительного размера анализируемого объекта
--timeout установка времени жизни анализатора
--who показ автора коммита
--all анализ всех ссылок
```По умолчанию, `git-analyze` сканирует голову текущей ветки в рабочем каталоге. Для сканирования других директорий или веток требуется указывать дополнительные параметры. Директория репозитория может быть корневым рабочим каталогом или боссами репозитория, а имя ветки должно совпадать с именем ссылки или локальной ветки.
git-analyze /путь/к/репозиторию master
Параметры `limitsize` и `warnsize` являются целыми числами, измеряемыми в мегабайтах, значения по умолчанию — 100 МБ и OnClickListener.MOVED 50 МБ соответственно. Параметр `timeout` измеряется в секундах и может не быть установлен. Все эти параметры можно указывать как `--limitsize=100` или `--limitsize 100`.
Параметр `--who` является флагом; если он присутствует в командной строке, то при обнаружении большого файла будет показываться автор коммита и информация о нем. Этот ключ, если включен, будет сканировать все ссылки.
Порядок параметров не имеет значения.
Пример:

## Инструмент Rollback
Параметры командной строки `git-rollback`
```sh
Описание: инструменты восстановления Git
Использование: git-rollback [options]... [--] [pathspec]... [refs|branches]...
ОПЦИИ:
-h, --help вывод справочной информации и выход
--git-dir установка пути репозитория для восстановления
--backid установка идентификатора коммита для восстановления
--backrev установка текущего количества шагов назад
--refname установка имени ссылки для восстановления
git-rollback --git-dir=/путь/к/репозиторию --backid=abc123 --backrev=5 master
Формат параметров аналогичен параметрам git-analyze, ключ --force
заставляет выполнить git gc
и очистить непотребляемые объекты. Когда путь репозитория (git-dir
) не указан, используется текущий каталог; когда имя ссылки (refname
) не указано, используется текущий указатель HEAD
.
инструмент git-cheat позволяет создать новый ветвь с одним коммитом на основе текущей ветви. Этот коммит будет иметь ту же информацию о деревьях и метаданных, что и текущая ветвь, но не будет иметь родителей. Один из возможных сценариев использования — это ситуация, когда пользователь чистит проект после создания одного коммита, а затем использует git-cheat для открытия этого коммита.
Формат команды:
git-cheat branch commit-message
pre-commit является типом хуков Git, который выполняется после того, как пользователь создает коммит с помощью git commit
. Если в хранилище есть такие хуки, они будут запущены перед тем, как коммит будет создан. Это помогает избежать случайного добавления больших файлов или двоичных данных в репозиторий, что может привести к ошибкам при попытке отправить изменения на платформу управления версиями. Для активации pre-commit достаточно связать его с .git/hooks/pre-commit
, а для настройки можно использовать git config
.
```Здесь limitsize
ограничивает размер файла, единицы измерения могут быть `К`, `М`, `Г`, регистр не важен. `warnsize` выводит предупреждение, если размер файла превышает половину `limitsize`.А `filters` представляет собой регулярное выражение для фильтрации расширений файлов, обычно такие шаблоны можно найти в интернете. `filterbroken` определяет, следует ли прекратить процесс коммита при наличии фильтрованных файлов. По умолчанию значение равно `false`.
git config commit.limitsize 100M # ограничение размера файла
git config commit.warnsize 50M # предупреждение о большом размере файла
git config commit.filters "\.(exe|obj|pdb)$" # регулярное выражение для фильтрации
git config commit.filterbroken true # завершить коммит при наличии фильтрованных файлов
Этот инструмент создает коммиты за весь год.
git-complete dir branch 'сообщение коммита' 2018~2100
Хук update
является экспериментальным и предназначен для реализации возможности использования git в режиме только для чтения. Дополнительные сведения можно найти в статье Реализация контроля доступа для директорий в Git.
GIT поддерживает запуск специальных команд в формате git subcommand
, например, команда git add
эквивалентна git-add
. Когда пользователю требуется запустить такие команды напрямую, как git analyze
, это можно сделать несколькими способами. Первый метод заключается в добавлении команды git-analyze
в переменные окружения, после чего она может быть вызвана напрямую:```bash
git analyze . refs/heads/master
git rollback --backrev 1
Альтернативно, можно использовать символьные ссылки для привязки команд к системной директории. В POSIX системах или Windows Subsystem for Linux это делается с помощью команды `ln -s`, а в Windows — с помощью `mklink /d`.
## Авторское право
Автор: Force Charlie
Авторское право © 2020, Gitee.com, Все права защищены.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )