Те, що говорить вам статус, - це те, що ви стоїте за викликом, origin/master
який називається місцевим номером вашого місцевого репо . У такому випадку, ця подія відбувається, щоб відслідковувати гілку в якомусь віддаленому, названому origin
, але статус нічого не говорить вам про гілку на віддаленому. Він розповідає про ref, який є лише ідентифікатором комісії, який зберігається у вашій локальній файловій системі (у такому випадку це, як правило, у файлі, який називається .git/refs/remotes/origin/master
у вашій місцевій репортажі).
git pull
робить дві операції; спочатку він робить a, git fetch
щоб бути в курсі комісій у віддаленому РЕПО (який оновлює origin/master
посилання у вашому локальному репо), потім робить це git merge
для об'єднання цих комісій у поточну гілку.
Поки ви не зробите цей fetch
крок (самостійно чи через нього git pull
), ваше місцеве репо не може знати, що є додаткові комісії вгору за течією, і git status
лише дивиться на ваш місцевий номер origin/master
.
Коли git status
йдеться про оновлення, це означає "в курсі гілки, яку відслідковує поточна гілка", що в даному випадку означає "в курсі місцевого виклику origin/master
". Це тільки прирівнюється до "оновленого стану зі статусом висхідного потоку, який було отримано останній раз, коли ми зробили fetch
", що не є "актуальним з останнім статусом живої лінії вгору за течією".
Чому це працює саме так? Що ж, fetch
крок - це потенційно повільна і дорога мережа. Дизайн Git (та інших розподілених систем управління версіями ) полягає у тому, щоб уникнути мережевих операцій, коли це не потрібно, і це абсолютно інша модель для типової системи клієнт-сервер, до якої звикли багато людей (хоча, як зазначено в коментарях нижче, концепція Git "гілки віддаленого відстеження", яка викликає плутанину тут, поділяються не всіма DVCS). Цілком можливо використовувати Git офлайн, без підключення до централізованого сервера, і вихід git status
відображає це.
Створення та перемикання гілок (і перевірка їх стану) в Git, як передбачається, буде легким, а не тим, що виконує повільну мережеву роботу до централізованої системи. Припущення при розробці Git та його git status
результатах полягало в тому, що користувачі розуміють це (занадто багато функцій Git має сенс, лише якщо ви вже знаєте, як працює Git). З прийняттям Git партіями та безліччю користувачів, які не знайомі з DVCS, це припущення не завжди справедливо.