Проверьте, был ли изменен файл во время фиксации в git

#git #version

#git #версия

Вопрос:

Есть ли какая-либо команда git, которая позволяет проверить, был ли файл изменен во время последней фиксации?

Я хотел бы проверить, был ли обновлен файл, содержащий номер версии, в противном случае разработчик получит предупреждение не выпускать программное обеспечение в среду интеграции до того, как версия была увеличена.

Ответ №1:

Попробуйте это:

 git diff --name-only HEAD~1 HEAD | grep somefile.txt
  

Предполагается, что вы хотите проверить somefile.txt , изменился ли файл при последней фиксации. Если вы хотите проверить, был ли somefile.txt изменен между любыми двумя фиксациями, затем используйте

 git diff --name-only SHA1 SHA2 | grep somefile.txt
  

где SHA1 и SHA2 — хэши двух коммитов, ограничивающих разницу.

Комментарии:

1. Будьте осторожны, используя это в сценариях, так как вы можете получить ложные срабатывания. Например, grep somefile.txt совпадения foo/somefile.txt или somefile.txt.gz или четные somefileXtxt .

Ответ №2:

 [[ `git rev-parse @:path/to/file` = `git rev-parse @~:path/to/file` ]]
  

или как функция

 head-changed-file () {
        set -- $(git rev-parse "@:$1" "@~:$1")
        [[ $1 != $2 ]]
}
  

и тогда вы можете head-changed-file somefile.txt amp;amp; echo okay it changed

Ответ №3:

 git diff --quiet HEAD^ HEAD -- path/to/file
  

завершается с кодом состояния 1, если path/to/file он был изменен или удален при последней фиксации. В противном случае код состояния равен 0.