В Git, как узнать, какие файлы были добавлены после определенного тега?
Я поддерживаю файлы сценариев SQL миграции базы данных.
я помечаю свои коммиты тегом git.
Предположим, у меня есть теги, такие как 1, 1.1, 1.2, 1.3
Я только хочу изменить файл (db migration sql script), когда тег не был добавлен в репо после создания этого файла. Как я могу это узнать?
Если файл был создан, а затем был добавлен тег (версия), то я не хочу изменять этот сценарий миграции sql, вместо этого я добавлю полностью новый файл sql, который помогает мне делать то, что я хочу.
2 ответов
вы можете использовать git diff с некоторым grepping следующим образом:
git diff --name-status your-tag..HEAD | grep ^A
это значит:
"дайте мне различия между your-tag
и HEAD
, показывая имя файла и его статус (добавлено, изменено, удалено, создано). "
grep затем фильтрует его в файлы, которые были добавлены, которые --name-status
указывает, начиная строку с верхнего регистра "A".
чтобы автоматически найти последний тег, вы можете использовать следующую команду:
git describe $(git rev-list --tags --max-count=1)
затем diff команда даст вам список добавленных файлов между двумя фиксациями:
git diff --diff-filter=A --name-only $start_commit_id $end_commit_id
Дополнительные параметры могут быть добавлены в фильтр diff, например --diff-filter=AR
будет список файлов ,которые были [A]dded plus [R]enamed.
Теперь, если вы поместите обе команды вместе, вы получите список файлов с последнего тега, независимо от того, какая последняя метка тега есть:
git diff --diff-filter=A --name-only $(git describe
$(git rev-list --tags --max-count=1)) HEAD