Git говорит, что в курсе, хотя изменения были сделаны удаленно - PullRequest
0 голосов
/ 16 декабря 2018

Использование 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 решил, что моя локальная главная ветка была обновлена, а на самом деле это не так?

Отказ от ответственности:У меня не очень большой опыт работы с Git и Soley на моих репозиториях.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

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

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

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

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

0 голосов
/ 16 декабря 2018

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

git pull, впростые термины, просто делает git fetch и git merge.

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

...