Я хотел бы знать, обновлено ли мое локальное репо (а если нет, в идеале, я хотел бы увидеть изменения).
Как я мог это проверить, не делая git fetchили git pull?
Я хотел бы знать, обновлено ли мое локальное репо (а если нет, в идеале, я хотел бы увидеть изменения).
Как я мог это проверить, не делая git fetchили git pull?
Ответы:
Попробуйте git fetch --dry-run
В руководстве ( git help fetch) говорится:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-runничего не появляется?
--all?
git pullпримерно эквивалентен a git fetch && git merge. Если вы в какой-то момент запускали выборку без использования --dry-run, значит, вы уже получили данные локально.
git remote show origin
Результат:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
Первое использование git remote update, чтобы обновить ваши удаленные ссылки. Затем вы можете сделать одно из нескольких, например:
git status -unoсообщит вам, идет ли ветвь, которую вы отслеживаете, впереди, сзади или в другую сторону. Если ничего не сказано, значит, локальный и удаленный одинаковые. Результат образца:В филиале DEV
Ваша ветка отстает от origin / DEV на 7 коммитов и может быть быстро перенаправлена.
(используйте "git pull", чтобы обновить локальную ветку)
git show-branch *master покажет вам коммиты во всех ветвях, имена которых заканчиваются на «master» (например, master и origin / master).Если вы используете -vс git remote update ( git remote -v update), вы можете видеть, какие ветки были обновлены, поэтому вам не нужны дополнительные команды.
git remote update ; git status -unoрешил это. git fetch --dry-runне давал выхода даже в тех случаях, когда локальный был позади удаленного.
вы можете использовать его, git status -unoчтобы проверить, обновлена ли ваша локальная ветка с исходной.
git remote update ; git status -unoсвое дело! Не git fetch --dry-runдал результата, когда я ожидал (и git pullпотянул).
Не совсем - но я не понимаю, насколько git fetchэто повредит, поскольку это не изменит ни одну из ваших местных веток.
Другой альтернативой является просмотр состояния удаленной ветки, используя
git show-branch remote/branchего для сравнения, вы можете git show-branch *branchувидеть ветку на всех пультах дистанционного управления, а также в своем репозитории! ознакомьтесь с этим ответом для получения дополнительной информации https://stackoverflow.com/a/3278427/2711378
Вам нужно будет выполнить две команды:
Ты должен бежать git fetch прежде чем сможете сравнить свой локальный репозиторий с файлами на удаленном сервере.
Эта команда обновляет только ветки удаленного отслеживания и не влияет на ваше рабочее дерево, пока вы не позвоните git mergeилиgit pull .
Чтобы увидеть разницу между вашей локальной веткой и веткой удаленного отслеживания после загрузки, вы можете использовать git diff или git cherry, как описано здесь.
Это невозможно без использования git fetchили git pull. Как узнать, является ли репозиторий «актуальным», не заходя в удаленный репозиторий, чтобы увидеть, что вообще означает «актуальный»?
git pull, который ОП явно запрещает в своем вопросе.
git status -unoэто работает, и можно также использовать git show-branch *masterдля просмотра статуса всех основных веток! Вы все еще говорите, что это невозможно? Вы можете видеть статус любой ветки, если у вас есть доступ к пульту!
git statusтолько сообщает вам статус ваших местных ссылок, он не говорит вам, обновлены ли ваши местные ссылки с удаленными ссылками. Опять же: просто логически невозможно узнать, в каком состоянии находится удаленное репо, без получения состояния удаленного репо. Период. Это всего лишь основные законы пространства-времени.
попытался отформатировать мой ответ, но не смог. Пожалуйста, команда stackoverflow, почему опубликовать ответ так сложно.
тем не менее,
ответ:
git fetch origin
git status (вы увидите результат типа «Ваша ветка отстает от origin / master на 9 коммитов»)
для обновления до удаленных изменений: git pull