Я хотел бы знать, обновлено ли мое локальное репо (а если нет, в идеале, я хотел бы увидеть изменения).
Как я мог это проверить, не делая 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