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

Я новичок в работе с git, но у меня есть репозиторий, содержащий файл с именем "test". Я хочу проверить, изменился ли этот файл. Есть ли способ сделать это?

Из большой картинки я пишу командный файл, который будет выполнять клон git репозитория, если что-то изменилось (что я выяснил с помощью опции сухого запуска). ИСКЛЮЧЕНИЕ для тестового файла (что означает, что даже если тестовый файл был изменен, я не хочу выполнять клонирование git

Сообщите мне, нужны ли вам какие-либо разъяснения и спасибо за ваше время.

Ответ 1

Использование

git diff test

покажет различия между рабочим каталогом test и версией репозитория. Использование diff покажет фактические различия; если вас это не интересует

git diff --name-only test

Ответ 2

Вы можете передать имя файла или каталога в git diff чтобы увидеть только изменения в этом файле или каталоге.

Если вы "пишете командный файл", то --exit-code к git diff может быть особенно полезен. например.

git diff --exit-code test

или же:

git diff --exit-code path/to/source/dir

Который вернет 1, если есть изменения в файле с именем test (или в любом другом указанном файле или каталоге) или 0 в противном случае. (Разрешение сценарию переходить на результат.)

Чтобы увидеть только имена измененных файлов (и не полный diff), используйте --name-only xor, вы можете использовать -s чтобы вообще не получать никакого вывода, а только код выхода.

Ответ 3

Git не предоставляет методы для запроса истории удаленного репозитория. Команды Git предназначены для запуска в локальном репозитории, поэтому сначала нужно clone (fetch было бы дешевле, если бы вы клонировали один раз раньше). Тем не менее, есть некоторые способы обойти это ограничение:

  • Вы можете попросить свой сервер Git выполнить команды, которые вы хотите для вас, через какой-либо API. Например, просмотр веб-страниц GitHub или использование их API-интерфейса разработчика относятся к этой категории. В этом случае веб-серверы GitHub используют команды Git для вас. Если вы используете сервер, отличный от bare Git, проверьте, есть ли у вашего сервера API, который мог бы помочь.
  • Используйте git-archive для загрузки архива, содержащего части репозитория. Я не думаю, что это поможет вам.