Я хотів би знати, чи оновлено моє місцеве репо (і якщо ні, то в ідеалі я хотів би переглянути зміни).
Як я міг це перевірити, не роблячи 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 ( git remote -v update), ви можете побачити, які гілки оновились, тому вам насправді не потрібні подальші команди.
git remote update ; git status -unoвирішив це. git fetch --dry-runне давав жодного результату навіть у тих випадках, коли локальний телефон знаходився позаду віддаленого.
git remote -v updateце відповідь для мене.
Ви можете використовувати, 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, що OP чітко забороняє у своєму питанні.
git status -unoце працює, і можна також використовувати, git show-branch *masterщоб побачити статус усіх головних гілок! Ти все ще кажеш, що це неможливо? Ви можете бачити стан будь-якої гілки, якщо у вас є доступ до пульта!
git statusповідомляє лише про стан ваших місцевих посилань, але не повідомляє, чи актуальні ваші місцеві посилання з віддаленими посиланнями. Знову ж таки: просто логічно неможливо дізнатись, яким є стан віддаленого репо, не отримавши стан віддаленого репо. Період. Це лише основні закони простору-часу.
спробував відформатувати мою відповідь, але не зміг. Будь ласка, команді stackoverflow, чому розміщення відповіді так важко.
нескінченний,
відповідь:
git fetch origin
git status (ви побачите результат типу "Ваша гілка відстає від" origin / master "на 9 комітів")
для оновлення до віддалених змін: git pull