Git говорит, что в курсе, хотя изменения были сделаны удаленно

Использование git bash: я работал над своей основной веткой, выдвинул ее и решил, что хочу реализовать новую функцию. Я создал новую ветку для этого. Позже я добавил еще одну функцию, создав еще одну ветку.

Я протестировал все, и это работало, поэтому я решил объединить все с моей основной веткой. Я подтолкнул обе новые ветви к удаленному репо.

Теперь, используя мой браузер, github предложил создавать запросы на извлечение для новых веток, что я и сделал, а затем предложил, чтобы я мог безопасно объединить, так как нет конфликтов. Поэтому я объединил все ветки с мастером.

Я думал, что, поскольку я сделал это онлайн, мое местное отделение больше не будет в курсе.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Я не мог в это поверить, поэтому я решил вытащить из своего удаленного репо.

$ git pull origin master
remote: Enumerating objects: 2, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/name/repo
 * branch            master     -> FETCH_HEAD
   ID..ID  master     -> origin/master
Updating ID..ID
Fast-forward
 file1 |  67 +++--
 file2     |  25 ++
 file3        | 292 +++++++++++----------
 3 files changed, 221 insertions(+), 163 deletions(-)
 create mode 100644 newfile

Почему git подумал, что мой локальный главный филиал обновлен, хотя на самом деле это не так?

Отказ от ответственности: я не очень опытен с мерзавцем и работаю над своим репозиторием.

2 ответа

Решение

После работы, которую вы проделали через Github, вам нужно было бы запустить git fetch обновить информацию о ваших ветках удаленного отслеживания и увидеть любые обновления git status,

git pullПроще говоря, просто делает git fetch а также git merge,

Этот ТАК вопрос полон отличной информации об этом.

Когда ты сделал свой git status, git сравнил вашу локальную главную ветку с локальной копией удаленной главной ветки. Поначалу это может сбить с толку, но на самом деле все довольно просто.

В вашем локальном репо хранятся копии ссылок на удаленное репо, поэтому состояние git не связано с сетевой активностью, это полностью локальная операция.

Чтобы обновить эти локальные копии удаленных филиалов, вам нужно git fetch, или же git pullкак и вы, который все равно использует git fetch для внутреннего использования.

Только в этот момент ваш локальный репо получает обновленную версию ваших онлайн-действий (ваших запросов на получение).

Другие вопросы по тегам