Получение изменений из удаленного репозитория и проверка с помощью git log @{u}
На этом этапе мы научимся получать изменения из удаленного репозитория и сравнивать нашу локальную ветку с удаленной с использованием команды git log @{u}
.
Сначала имитируем наличие удаленного репозитория. В реальной жизни он может быть на платформе, такой как GitHub или GitLab, но в этом практическом занятии (LabEx) мы будем использовать локальную директорию в качестве "удаленного" репозитория.
Перейдите в директорию проекта:
cd ~/project/my-time-machine
Теперь добавим удаленный репозиторий с именем origin
, который будет указывать на имитируемый удаленный репозиторий. Предположим, что удаленный репозиторий был настроен в разделе setup
.
git remote add origin ../my-time-machine-remote
Эта команда сообщает вашему локальному репозиторию Git, что есть другой репозиторий по адресу ../my-time-machine-remote
, и мы называем его origin
.
Теперь получим последние изменения из этого удаленного репозитория. Команда git fetch
загружает коммиты, файлы и ссылки (refs) из удаленного репозитория в ваш локальный репозиторий. Она не автоматически объединяет (merge) или изменяет вашу текущую работу.
git fetch origin
Вы должны увидеть вывод, указывающий, что Git получает изменения из удаленного репозитория.
После получения изменений мы можем использовать команду git log @{u}
(или git log origin/master
в данном случае, так как origin/master
является веткой-родителем (upstream) для master
) для просмотра коммитов на удаленной ветке, которые еще не находятся на нашей локальной ветке. Синтаксис @{u}
или @{upstream}
ссылается на ветку-родитель текущей ветки.
git log @{u}
Поскольку наша локальная ветка master
была создана с нуля, а удаленная ветка master
(имитируемая) также начиналась пустой, и мы еще не добавили никаких коммитов в удаленный репозиторий, эта команда может не показать никакого вывода или показать начальный коммит, если удаленный репозиторий был инициализирован с ним. Главное - понять, что делает эта команда: она показывает коммиты, которые есть на ветке-родителе (origin/master
), но которых еще нет на вашей текущей локальной ветке (master
).
Понимание различий между вашей локальной веткой и удаленной веткой является важным аспектом для совместной работы и поддержания актуальности проекта. Команды git fetch
и git log @{u}
- мощные инструменты для проверки состояния удаленного репозитория без изменения вашего локального рабочего каталога.