Я хотів би знати, чи оновлено моє місцеве репо (і якщо ні, то в ідеалі я хотів би переглянути зміни).
Як я міг це перевірити, не роблячи 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