Я хотел бы знать, обновлено ли мое локальное репо (а если нет, в идеале я хотел бы увидеть изменения).
Как я мог это проверить, не выполняя 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
, ничего не отображается?
- person Paramvir Singh Karwal; 20.08.2018
--all
?
- person Philip Oakley; 21.08.2018
git fetch --dry-run
не выводит результат, когда git pull
собирается загрузить кучу обновлений. Другими словами, он не говорит мне, отстает моя ветка или нет.
- person Aaron Beall; 27.09.2019
git pull
примерно эквивалентен git fetch && git merge
. Если вы в какой-то момент запускали выборку без --dry-run
, значит, вы уже получили данные локально.
- person DuckPuppy; 22.10.2019
git fetch
недостаточно знать, обновлено ли мое локальное репо. Мне не ясно, не понял ли OP, когда этот ответ был принят, или вопрос сформулирован нечетко.
- person Aaron Beall; 22.10.2019
git merge --dry-run
, ни git pull --dry-run
, которые являются разновидностью боли. Всегда предлагаемое решение - выборка, git merge --no-commit --no-ff
и прерывание, но оно не отвечает на вопрос, поскольку выборка уже была произведена. Не говоря уже о непостоянных изменениях.
- person Maciej Załucki; 16.11.2019
git fetch
?
- person alper; 01.12.2020
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 (git remote -v update
), вы можете видеть, какие ветки были обновлены, поэтому вам не нужны дополнительные команды.
git remote update ; git status -uno
решил это. git fetch --dry-run
не давал никаких результатов даже в тех случаях, когда локальный был позади удаленного.
- person Aaron Beall; 27.09.2019
вы можете использовать git status -uno
, чтобы проверить, обновлена ли ваша локальная ветка с исходной.
git remote update ; git status -uno
свое дело! git fetch --dry-run
не дал результата, когда я ожидал (а git pull
вытащил).
- person Aaron Beall; 27.09.2019
Не совсем - но я не понимаю, насколько 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 --dry-run -v <link/to/remote/git/repo>
вы получите отзыв о том, актуален ли он. По сути, вам просто нужно добавить параметр «подробный» к приведенному ранее ответу.
Это невозможно без использования git fetch
или git pull
. Как узнать, является ли репозиторий «актуальным», не заходя в удаленный репозиторий, чтобы увидеть, что вообще означает «актуальный»?
git pull
, что ОП явно запрещает в своем вопросе.
- person Jörg W Mittag; 11.11.2014
git status -uno
это работает, и можно также использовать git show-branch *master
, чтобы увидеть состояние всех основных веток! Вы все еще говорите, что это невозможно? Вы можете видеть статус любой ветки, если у вас есть доступ к пульту!
- person Amanuel Nega; 11.11.2014
git status
только сообщает вам статус ваших местных ссылок, он не сообщает вам, обновлены ли ваши местные ссылки с удаленными ссылками. Опять же: просто логически невозможно узнать, в каком состоянии находится удаленное репо, без получения состояния удаленного репо. Период. Это всего лишь основные законы пространства-времени.
- person Jörg W Mittag; 11.11.2014
git fetch
или git pull
. OP на самом деле не означал (насколько я могу судить) вообще без использования команд git pull
или git fetch
, а без получения удаленного репо. Я думаю, что Йорг интерпретировал это в первую очередь, и это понятно. С таким же успехом вину можно было бы возложить на ОП - глупо отрицать этот ответ.
- person iconoclast; 18.05.2016
git status --check-remote
. Если автор хочет проверить актуальность репо без запроса удаленного репо, то это логически невозможно.
- person ramwin; 25.04.2019
попытался отформатировать мой ответ, но не смог. Пожалуйста, команда stackoverflow, почему опубликовать ответ так сложно.
тем не менее,
ответ:
git fetch origin
git status (вы увидите результат типа «Ваша ветка отстает от origin / master на 9 коммитов»)
для обновления до удаленных изменений: git pull
git remote show origin
Enter passphrase for key ....ssh/id_rsa:
* remote origin
Fetch URL: [email protected]:mamaque/systems.git
Push URL: [email protected]:mamaque/systems.git
HEAD branch: main
Remote branch:
main tracked
Local ref configured for 'git push':
main pushes to main (up-to-date)
Оба обновлены main pushes to main (fast-forwardable)
Удаленный можно обновить с помощью локального main pushes to main (local out of date)
Локальный можно обновить с помощью удаленного