TL; DR
Эта строка:
commit a2d1acfe855899e7e9562a16b692aa5d1f44d5dd (HEAD -> master, origin/master)
означает, что ваш master
уже синхронизирован с вашим origin/master
, поэтому вына том же коммите.Единственное предостережение в том, что это из памяти вашего Git 1011 * их Git, последний раз, когда ваш Git говорил со своим Git.Запускайте git fetch origin
в любое время, чтобы ваш собственный Git получал что-то новое от их (origin
) Git и обновлял ваши origin/*
имена: теперь память вашего Git обновлена.(Конечно, это может устареть через несколько секунд.)
Long
Git может быть довольно запутанным.Терминология не очень последовательна, и слова снова и снова используются в совершенно разных значениях.
В этом случае предупреждающее сообщение - это то, что вы заметили: master@{...}
использует то, что Git называет reflogs .Reflogs - это журналы (не связанные с git log
) из refs или ссылок .Имя master
- это имя ветви , которое представляет собой конкретную форму reference .Так что это относится к reflog для ref refs/heads/master
, а refs/heads/master
- это длинный путь написания master
.
Итак, мы только что увидели одну проблему: слово log может означать git log
, но это может означать что-то еще.Это ничто, однако, по сравнению со словом ответвление! См., Например, Что именно мы подразумеваем под «ответвлением»?
Чтобы помочь устранить всю путаницуДавайте начнем с чего-то более простого.Когда вы используете Git, задействовано более одного хранилища.У вас есть ваша копия, у меня есть моя , у Фреда его , у Алисы ее и так далее.В каждом из этих репозиториев Git есть ветки, коммиты и тому подобное.Как мы можем держать их всех прямо?
В Гите есть только несколько абсолютов.Основным из них являются те хеш-идентификаторы, которые вы видите в своих git log
выходных данных:
commit 1cfee7bc5c292c09a108e0319ddcec8ab3608887
и:
commit a2d1acfe855899e7e9562a16b692aa5d1f44d5dd
Эти хэшиИдентификаторы действительно универсальны.Если у вас есть коммит a2d1acfe855899e7e9562a16b692aa5d1f44d5dd
, ваш Git называет его a2d1acfe855899e7e9562a16b692aa5d1f44d5dd
.Если у Алисы есть это, ее Git также называет это a2d1acfe855899e7e9562a16b692aa5d1f44d5dd
. Каждый , у которого есть , который фиксирует, называет его тем же большим уродливым хеш-идентификатором.У них либо есть это, либо у них нет ничего с таким большим уродливым хэш-идентификатором.
Простые люди, конечно, ужасно работают с этими хэш-идентификаторами.Но у нас нет , чтобы иметь с ними дело в большинстве случаев: у нас есть компьютер .Почему бы не это запомнить хэш-идентификаторы?Таким образом, Git делает это - вот где приходят имена веток, - но каждый репозиторий Git имеет своих имен ветвей.Ваш master
не должен совпадать с master
Боба.У вашего имени master
будет большой некрасивый хеш-идентификатор, но он может отличаться от имени другого.
Чтобы справиться с этим, наши Гиты помнят ветви друг друга.Когда ваш Git вызывает другой Git, который вы называете origin
, у вашего Git есть список Git с именами ветвей и хэш-идентификаторами.Их Git может сказать , мой master
равен a2d1acfe855899e7e9562a16b692aa5d1f44d5dd
.Если это так, ваш Git удостоверится, что у вас есть этот коммит (по хеш-идентификатору), если он получен из Git, а ваш Git устанавливает ваше refs/remotes/origin/master
имя на a2d1acfe855899e7e9562a16b692aa5d1f44d5dd
.
В конце концов, это означает, что вы можете сказать, что было у их Git master
, когда в последний раз ваш Git разговаривал со своим Git, проверив, что ваш Gitorigin/master
сейчас.Вы можете изменить идентификатор хеша, которым является master
;ваш Git оставит ваш origin/master
- полное имя refs/remotes/origin/master
- один, пока ваш Git не вызовет их Git снова и не узнает, где находится их master
.
Your reflogs помните, что ваш Git добавил в ваши ссылки.Каждый раз, когда ваш Git обновляет ваш master
, ваш Git сохраняет новую запись в рефлоге вашего Git refs/heads/master
.Это работает и для ваших имен для удаленного слежения: каждый раз, когда ваш Git обновляет ваш refs/remotes/origin/master
, память о мастере origin
, ваш Git сохраняет новую запись в журнале refs/remotes/origin/master
вашего Git.Таким образом, вы можете посмотреть в своих журналах, но это посмотреть, что у вас было в ваших собственных ссылках.Это не смотрит ни на какие фактические коммиты , по крайней мере, не сразу;эти записи reflog содержат по одному хеш-идентификатору, и вы можете использовать его для поиска коммитов.
Записи Reflog являются частными для каждого Git.Ваш Git не получит записи reflog от своего Git.Вы не можете видеть, что они сделали со своими рефери с течением времени, но никак не так.Вы можете видеть только то, что ваш Git сделал с вашими ссылками с течением времени.