Вы можете использовать git archive для доступа к отдельным файлам без загрузки какой-либо другой части репозитория:
if git archive --format=tar \
--remote=<remote_name-or-URL> master README >/dev/null; then
echo 'master has README'
else
echo 'master does not have README (or other error)'
fi
Служба архивирования (upload-archive
) может быть включена не на всех серверах или в репозиториях, однако вам придется проверить ее на наличие серверов и репозиториев, к которым вам необходим доступ.
Если служба архивации недоступна, вам придется извлекать объекты обычным способом.
Если у вас еще нет удаленной настройки для рассматриваемого репозитория, вы можете выполнить «мелкую» выборку в FETCH_HEAD (это необходимо сделать в репозитории Git, но она может быть совершенно не связана или даже пуста):
git fetch --depth=1 remote_name-or-URL master
if git rev-parse --verify --quiet FETCH_HEAD:README >/dev/null; then
echo "repository's master has README"
else
echo "repository's master does not have README"
fi
Если у вас есть удаленный сервер, определенный для хранилища, то вы, вероятно, просто хотите обновить его и получить доступ к файлу через обычные ветви удаленного отслеживания:
git fetch remote_name
if git rev-parse --verify --quiet remote_name/master:README >/dev/null; then
echo "remote's master has README"
else
echo "remote's master does not have README"
fi