Для того чтобы совместно работать над каким-нибудь проектом, вам необходимо уметь работать с удаленными репозиториями.
Удаленные репозитории представляют собой версии вашего проекта, сохраненные в интернете или еще где-то в сети. У вас может быть несколько удаленных репозиториев, каждый из которых может быть доступен для чтения или для чтения-записи.
Взаимодействие с другими разработчиками предполагает управление удаленными репозиториями, а также отправку и получение данных из них. Управление репозиториями включает в себя как умение добавлять новые, так и умение удалять устаревшие репозитории, а также умение управлять различными удаленными ветками, объявлять их отслеживаемыми или нет и так далее. В данном разделе вы рассмотрите некоторые из этих навыков.
Для того, чтобы просмотреть список настроенных удаленных репозиториев, вы можете воспользоваться расширением Git Graph. Откройте расширение и нажмите (Repository Settings) в его командной панели.
В разделе Remote Configuration вы увидите информацию о доступных удаленных репозиториях.
Если вы клонировали репозиторий, то увидите как минимум origin?—?имя по умолчанию, которое Git дает серверу, с которого производилось клонирование.
Рядом с именем репозитория вы видите адреса для чтения (Fetch) и записи (Push), привязанные к репозиторию. В данном случае они одинаковые — https://github.com/1C-EDT-Developer/coldevex.
Если у вас больше одного удаленного репозитория, в этом разделе вы увидите их все.
В одном из предыдущих разделов вы уже видели пример работы с удаленным репозиторием — клонирование репозитория. Тогда вы, имея удаленный репозиторий, связывали его с локальным репозиторием и получали из удаленного репозитория разрабатываемый проект.
Сейчас вы познакомитесь с противоположным сценарием. У вас есть локальный репозиторий, в котором находится проект. Нужно связать этот репозиторий с удаленным репозиторием и поместить проект в него, чтобы другие разработчики смогли разрабатывать проект вместе с вами.
Для примера в качестве удаленного репозитория можно использовать бесплатный репозиторий на сайте GitHub.
Для получения данных из удаленного репозитория следует выполнить команду Принесение (Fetch). Эта команда расположена в дополнительном меню репозитория.
Если у вас подключено несколько удаленных репозиториев, то в этом же меню есть аналогичная команда . ( )
Также эта команда доступна и в разделе Граф системы управления версиями (Source Control Graph): (Забрать из всех удаленных репозиториев / Fetch From All Remotes)
Данная команда, Принесение (Fetch), связывается с удаленным репозиторием и забирает все те данные проекта, которых у вас еще нет. После того как вы выполнили команду, у вас должны появиться ссылки на все ветки из этого удаленного репозитория, которые вы можете просмотреть или слить в любой момент.
Когда вы клонируете репозиторий, Visual Studio Code автоматически добавляет этот удаленный репозиторий под именем origin. Таким образом, команда Принесение (Fetch) извлекает все наработки, отправленные на этот сервер после того, как вы его клонировали или получили изменения с помощью Принесение (Fetch).
Важно отметить, что команда Принесение (Fetch) забирает данные в ваш локальный репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент. Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы.
Если ветка настроена на отслеживание удаленной ветки (см. следующий раздел и главу Ветвление в Git чтобы получить больше информации), то вы можете использовать команду Вытягивание (Pull) чтобы автоматически получить изменения из удаленной ветки и слить их со своей текущей. Этот способ может для вас оказаться более простым или более удобным. К тому же, Visual Studio Code по умолчанию при клонировании автоматически настраивает вашу локальную ветку main на отслеживание удаленной ветки main на сервере, с которого вы клонировали репозиторий. Название веток может быть другим и зависит от ветки по умолчанию на сервере.
Если у вас подключено несколько удаленных репозиториев, то тогда вы можете использовать команду . Она позволяет выбрать нужный репозиторий. ( )
Когда вы хотите поделиться своими наработками, вам необходимо отправить их в удаленный репозиторий. Для этого можно использовать команду Отправка (Push), которая находится в дополнительном меню репозитория. Эта команда срабатывает только в случае, если вы клонировали репозиторий с сервера, на котором у вас есть права на запись, и если никто другой с тех пор не выполнял команду Отправка (Push).
Например, вы и другой разработчик одновременно клонировали удаленный репозиторий, а затем этот другой разработчик выполнил команду Отправка (Push). Если после этого команду Отправка (Push) выполняете вы, то ваша отправка точно будет отклонена. Вам придется сначала получить изменения другого разработчика и объединить их с вашими — Вытягивание (Pull). Только после этого вам будет позволено выполнить Отправка (Push). См. раздел Ветвление в Git для более подробного описания, как отправлять данные в удаленный репозиторий.
Чаще всего необходимость отправить изменения в удаленный репозиторий возникает сразу после их фиксации, поэтому в разделе Система управления версиями (Source Control) есть кнопка Фиксация и отправка (Commit & Push):
Эта команда фиксирует изменения в вашем локальном репозитории и сразу отправляет их в удаленный репозиторий.
Для переименования удаленного репозитория можно использовать расширение Git Graph. Откройте расширение, нажмите (Repository Settings) в его командной панели, а затем нажмите (Edit Remote...) у нужного удаленного репозитория.
Расширение откроет диалоговое окно, в котором вы сможете выполнить изменения. Например, с origin на michael (если вы, например, подключили репозиторий своего коллеги).
Стоит упомянуть, что это также изменит имена удаленных веток в вашем репозитории. То, к чему вы обращались как origin/main, теперь стало michael/main.
Если по какой-то причине вы хотите исключить удаленный репозиторий из списка используемых (вы сменили сервер или больше не используете определенное зеркало, или кто-то перестал вносить изменения), вы можете использовать команду (Delete Remote...), расположенную тут же.
Аналогичная ей команда находится и в контекстном меню репозитория в представлении ( )Система управления версиями (Source Control).
При удалении ссылки на удаленный репозиторий все отслеживаемые ветки и настройки, связанные с этим репозиторием, так же будут удалены.
По материалам книги Pro Git (авторы Scott Chacon и Ben Straub, издательство Apress). Книга распространяется по лицензии Creative Commons Attribution Non Commercial Share Alike 3.0 license.