Действительно ли команда git checkout branch действительно сравнивается с удаленной? - PullRequest
1 голос
/ 13 июня 2019

мой проект в настоящее время имеет две ветви, master и feature, и я работаю над веткой feature.

Когда я закончил, я выполнил git push для bitbucket и выполнил pull request на панели инструментов bitbucket.

Теперь, когда все сделано, я возвращаюсь к своему терминалу, я все еще на feature ветви, поэтому я git checkout master переключаюсь обратно на master, и я получаю сообщение

Переключен на ветку 'master'

Ваш филиал обновлен до 'origin / master'

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

remote: Counting objects: 1, done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (1/1), done.
From https://git.domain.com:1234/bitbucket/xx/xx
   256c6bc..0a3bb4f  master    -> origin/master
Updating 256c6bc..0a3bb4f
Fast-forward
 .eslintrc.js                  |  15 +-
 App/Containers/xx.js | 363 ++++++++++++++++++------------------
 App/Containers/xxa.js  | 594 +++++++++++++++++------------------------------------------
 3 files changed, 352 insertions(+), 620 deletions(-)

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

  1. Хотите знать, правильно ли мое понимание?
  2. На более раннем этапе, когда я впервые переключился на master после выполнения слияния, разве сообщение Your branch is up to date with 'origin/master' не вводит в заблуждение?

Ответы [ 3 ]

3 голосов
/ 13 июня 2019

Краткий ответ

Операции Git, такие как git status, git checkout, git commit, выполняются в автономном режиме с использованием данных в вашем хранилище Git.

То, что вы хотите сделать, чтобы узнать, действительно ли ваша ветка обновлена ​​с помощью пульта дистанционного управления, - это начать с git fetch. Это позволит получить данные с удаленного сервера и обновить origin/master и другие ветви в источнике.

После этого git status сообщит вам, что ваша ветка устарела.

Мои 2 цента на git pull

Я не фанат git pull, потому что вы не знаете заранее, что он собирается делать: немного упрощая, это более или менее эквивалентно выполнению git fetch с последующим git merge, но только с автоматическими проверками.

Я предпочитаю этот рабочий процесс:

  • git fetch
  • анализировать результаты, просматривая журнал с git fetch, а также git status и / или git log и / или git diff
  • git merge или git rebase, или даже иногда git pull, в зависимости от моего анализа, возможно, с временной веткой разработчика или git stash

Мой рабочий процесс - это больше, чем просто git pull, но я знаю, что произойдет до того, как будут внесены какие-либо изменения.

1 голос
/ 13 июня 2019

Ключевая часть в том, что в git действительно есть 3 «копии» любой ветви:

  1. Копия на локальном компьютере
  2. Копия удаленного налокальный компьютер
  3. Копия на удаленном компьютере

Когда git status сообщает вам, что «ваша ветвь обновлена ​​с помощью origin / master», она сравнивает # 1и № 2.Выполнение git fetch - это то, как # 2 обновляется до соответствия № 3.

Короче говоря, вы правы, что магии нет.На вашем компьютере origin/master не обновляется автоматически с фактическим пультом.

0 голосов
/ 13 июня 2019

В этот момент, Your branch is up to date with 'origin/master' отображается как ожидалось.Но в течение периода до следующей выборки / извлечения master в удаленном репозитории может обновляться вашими или другими запросами на получение, и новые слияния могут создаваться из-за слияния без ускоренной перемотки вперед.В результате ваш локальный masterorigin/master) будет несколько коммитов за master в удаленном хранилище.git pull получит новые коммиты для обновления origin/master и master.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...