Опасность 'git pull' в случае, если единственные изменения в локальном репозитории происходят из удаленного репозитория - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть сценарий использования, когда скрипту нужно извлечь удаленный репозиторий, чтобы получить последнюю версию определенного файла в этом удаленном репозитории.Обычные рекомендации по извлечению удаленного репозитория: git checkout master для перемещения в master ветвь, git remote update -p для извлечения из удаленных репозиториев, плюс удаление веток, которые больше не определены в удаленном репозитории, и, наконец, git merge --ff-only @{u} для объединения изменений - это быстроВперед возможно.Тем не менее, нужно ли мне все это, если мой скрипт никогда не создает дополнительные ветки локально или никогда ничего не добавляет / фиксирует.Правильно ли я понимаю, что в случае, если единственные изменения в локальном репозитории происходят из удаленного репозитория, тогда достаточно просто git pull?

1 Ответ

0 голосов
/ 28 февраля 2019

Вам не нужна операция «слияния» (что подразумевается под «тянуть»).Чтобы проверить, был ли файл обновлен, вы можете использовать

git fetch origin refs/heads/master
git diff --quiet FETCH_HEAD..last-check -- the-file || echo "changed"
git branch -f last-check FETCH_HEAD

Ответы на обновленный вопрос

«Последняя редакция» (где the-file была изменена) в смысле git:

git log --format=format:%H -1 FETCH_HEAD -- the-file

Чтобы получить содержимое файла, вы можете использовать

git show FETCH_HEAD:the-file

Чтобы заменить файл (и только этот один файл) в вашем рабочем каталоге, используйте

git checkout FETCH_HEAD -- the-file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...