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