Создать удаленный репозиторий на GitHub и поместить конфигурацию в него

Этот пример демонстрирует создание бесплатного публичного репозитория на сайте github.com и версионирование вашего проекта в этом репозитории.

Примечание: При необходимости можно аналогичным образом использовать приватные платные репозитории на этом же сайте или воспользоваться другими сервисами для создания удаленных репозиториев, например Sourceforge, Google Cloud Source Repositories и другими.
Совет: Предполагается, что у вас в 1C:EDT уже существует проект, который вы разрабатываете. Если нет, то вы можете:
Пример состоит из нескольких частей:
  1. Подключить проект к локальному репозиторию
  2. Зафиксировать изменения конфигурации
  3. Зарегистрироваться на сайте GitHub
  4. Создать удаленный репозиторий на GitHub
  5. Получить токен доступа
  6. Отправить ветку в удаленный репозиторий
  7. Просмотреть историю изменений и отправить изменения в удаленный репозиторий
  8. Отменить коммиты

Подключить проект к локальному репозиторию

Сейчас вы создадите локальный репозиторий Git на своем компьютере и подключите проект к этому репозиторию. На схеме это выглядит следующим образом:

  1. Запустите 1C:EDT или перейдите в нее, если она у вас уже запущена;
  2. Убедитесь, что вы находитесь в перспективе 1C:Enterprise. Когда это так, в панели перспектив выделен значок (1C:Enterprise):
    • Если вы находитесь в другой перспективе, нажмите на этот значок и перейдите в перспективу 1C:Enterprise;
    • Если в панели перспектив нет такого значка, нажмите > 1C:Enterprise (по умолчанию) > Открыть в панели перспектив;
  3. Для проекта, который вы хотите поместить в репозиторий, в панели Навигатор нажмите Групповая разработка > Общий проект... в контекстном меню;
  4. Задайте основные свойства локального репозитория, который будет располагаться на вашем компьютере:
    Предупреждение: Когда вы создаете локальный репозиторий, создавайте его таким образом, чтобы каталог репозитория и рабочая область 1C:EDT не находились в иерархии друг друга. Подробнее об этом читайте здесь.
    • В поле Репозиторий укажите каталог, в котором будет размещаться репозиторий;
    • Нажмите Готово;
  5. 1C:EDT переместит ваш проект в каталог репозитория. В результате вы увидите следующие изменения:
    • В контекстном меню Групповая разработка проекта появятся команды работы с репозиторием;
    • Перейдите в перспективу Git, для этого нажмите > Git > Открыть в панели перспектив;

      Здесь в панели Репозитории Git появился ваш локальный репозиторий. В его рабочем каталоге находится структура вашего проекта с файлами:

  6. В панели перспектив нажмите (1C:Enterprise) чтобы вернуться обратно в перспективу 1C:Enterprise.

Зафиксировать изменения конфигурации

Сейчас вы создадите первый коммит своего проекта, в результате чего проект окажется в локальном репозитории. На схеме это выглядит следующим образом:

  1. В панели Навигатор нажмите Групповая разработка > Коммит... в контекстном меню проекта, который вы подключили к локальному репозиторию. Откроется панель Индексирование Git, в поле Неиндексированные изменения будут находиться файлы вашего проекта;
  2. Создайте коммит:
    • Нажмите (Добавить все файлы в индекс) в командной панели неиндексированных изменений. Через некоторое время все файлы будут перенесены в поле Индексированные изменения;
    • В поле Сообщение коммита введите комментарий, описывающий суть ваших изменений;
    • Нажмите Фиксировать;
  3. В результате все поля в панели Индексирование Git очистятся, а в панели Навигатор перед именем проекта исчезнет угловая кавычка >. Она говорила о том, что состояние файлов проекта в рабочем каталоге отличается от того, что находится в репозитории (ведь в репозитории ничего не было).

Зарегистрироваться на сайте GitHub

Сейчас вы создадите учетную запись на сайте GitHub. На схеме это выглядит следующим образом:

  1. Откройте в браузере страницу github.com;
  2. Нажмите Sign up в правом верхнем углу;
  3. Введите свой адрес электронной почты и нажмите Continue;
  4. Введите свой будущий пароль и нажмите Continue;
  5. Введите свое будущее имя пользователя и нажмите Continue;
  6. Можете, по желанию, установить флажок, чтобы получать объявления о продуктах и обновления. Нажмите Continue;
  7. GitHub попросит вас решить задачу, нажмите Проверить;
  8. Расположите предмет нужным образом и нажмите Отправить;
  9. Введите проверочный код, высланный вам на электронную почту;
  10. Войдите в свою учетную запись: введите имя пользователя, пароль, и нажмите Sign in;
  11. Укажите, что работать с репозиторием будете только вы (Just me), и нажмите Continue;
  12. Не выбирайте никакие инструменты, а просто нажмите Continue;
  13. Нажмите Continue for free чтобы выбрать бесплатный план обслуживания;
  14. После этого вы окажетесь на главной странице своего аккаунта в GitHub.

Создать удаленный репозиторий на GitHub

Сейчас вы создадите пустой удаленный репозиторий на сайте GitHub. На схеме это выглядит следующим образом:

  1. На главной странице GitHub заполните основные свойства будущего репозитория:
    • В поле Repository name введите имя будущего репозитория;
    • Установите флажок Public, чтобы все могли видеть ваш репозиторий;
    • Нажмите Create a new repository.
  2. GitHub создаст репозиторий и откроет его главную страницу;

Получить токен доступа

Сейчас вы на сайте GitHub получите токен доступа. Токен доступа — это как пароль для пользователя, только токен предназначен не для человека, а для программы. Токен доступа будет использовать 1C:EDT для авторизации на GitHub в тех случаях, когда вы отправляете туда изменения своего проекта.

  1. На главной странице GitHub откройте меню своего профиля, нажав на иконку в правом верхнем углу экрана;
  2. Нажмите Settings в нижней части меню;
  3. Пролистайте экран вниз и нажмите Developer settings в левом меню;
  4. В левом меню раскройте группу Personal access tokens и нажмите Token (classic);
  5. Раскройте список Generate new token и нажмите Generate new token (classic);
  6. Возможно GitHub попросит вас авторизоваться еще раз — введите свой пароль и нажмите Confirm;
  7. Заполните параметры будущего токена:
    • Note — имя токена, которое позволит вам отличать один свой токен от другого;
    • Expiration — в учебных целях можете выбрать здесь No expiration, но для реальной работы рекомендуется указывать дату не больше года;
    • Select scopes — установите все флажки, чтобы иметь доступ ко всем областям;
  8. Пролистайте страницу вниз и нажмите Generate token;
  9. Скопируйте полученный токен и сохраните его. Он понадобится вам в качестве пароля, когда вы будете настраивать отправку изменений в удаленный репозиторий;

Отправить ветку в удаленный репозиторий

Сейчас вы настроите связь вашего локального репозитория с удаленным репозиторием на GitHub и первый раз отправите в него свои изменения. На схеме это выглядит следующим образом:

  1. Запустите 1C:EDT или перейдите в нее, если она у вас уже запущена;
  2. Убедитесь, что вы находитесь в перспективе 1C:Enterprise, в ней у вас с правой стороны осталась открыта панель Индексирование Git. Если ее нет, нажмите Окно > Показать панель > Другое… > Git > Индексирование Git чтобы открыть ее;
  3. В нижней части этой панели нажмите Отправить HEAD...;
  4. Здесь вам нужно будет заполнить основные свойства вашего удаленного репозитория, расположенного на GitHub:
    • URI — путь к репозиторию. Его нужно будет скопировать из GitHub;
    • Пользователь — ваше имя пользователя в GitHub;
    • Пароль — токен доступа, который вы сохранили на предыдущем шаге;
  5. Чтобы узнать путь к репозиторию GitHub, откройте вкладку браузера, на которой вы получали токен;
  6. Нажмите значок меню в левом верхнем углу экрана, а затем Home. Вы окажетесь на главной странице;
  7. Ваши репозитории перечислены слева, нажмите на свой репозиторий;
  8. Убедитесь, что выделен протокол доступа HTTPS и скопируйте адрес репозитория;
  9. Перейдите в 1C:EDT, заполните свойства удаленного репозитория и установите флажок Сохранить в защищенном хранилище. Нажмите Далее;
  10. На этом экране ничего менять не надо, стандартные настройки удаленного репозитория вас устраивают. Нажмите Далее;
  11. 1C:EDT попросит вас подтвердить результат отправки: что ваша ветка master будет отправлена в удаленный репозиторий MyProject в его ветку master. Значения флажков, установленные стандартно, вас сейчас устраивают, их менять не надо. Просто нажмите Отправить;
  12. За ходом отправки можно наблюдать в правом нижнем углу экрана.
  13. Через некоторое время 1C:EDT покажет результат отправки;
  14. Все хорошо, в удаленном репозитории создана новая ветка master. Нажмите Закрыть.

На этом настройка связи с удаленным репозиторием и первая отправка изменений завершены.

Просмотреть историю изменений и отправить изменения в удаленный репозиторий

Сейчас вы посмотрите, как выглядит история изменений, хранящихся в локальном и в удаленном репозитории. Также вы посмотрите, как происходит обычная работа с этими репозиториями.

  1. Для просмотра изменений в локальном и удаленном репозитории вам понадобится панель История. В панели Навигатор нажмите Групповая разработка > Показать Историю в контекстном меню проекта;
  2. Панель откроется во всплывающем режиме в правом верхнем углу экрана, вместе с панелью Ошибки конфигурации. Чтобы она всегда была на виду, разверните эту группу панелей. Для этого нажмите на значок (Восстановить). Группа панелей зафиксируется в нижней части экрана;
  3. Сейчас в панели История есть единственный коммит. Он расположен в локальном репозитории в ветке master. На это указывает зеленый значок. Зеленым цветом 1C:EDT обозначает локальные ветки.
  4. Кроме этого видно, что этот же коммит находится в удаленном репозитории в его ветке master. На это указывает серый значок. Серым цветом 1C:EDT обозначает ветки удаленного отслеживания. «origin» — это стандартное имя удаленного репозитория. Оно было задано во время настройки отправки, см. п.9;
  5. Чтобы в дальнейшем вам было удобнее наблюдать за изменениями, переключите панель История в режим показа всех изменений репозитория. Для этого раскройте фильтр, расположенный в ее командной панели, и нажмите Все изменения в репозитории;
  6. Сейчас вы сделаете несколько тренировочных коммитов, которые в последствии можно будет отменить.
  7. Внесите какие-нибудь изменения в конфигурацию (например, добавьте справочник) и зафиксируйте их в локальном репозитории. Посмотрите, как изменится история. Для этого:
    1. В панели Навигатор нажмите Создать > Справочник > Готово в контекстном меню ветки Справочники;
    2. Добавьте все файлы в индекс;
    3. Напишите сообщение коммита;
    4. Нажмите Фиксировать (см. Зафиксировать изменения конфигурации);
  8. Вы видите в панели История, что теперь история вашего локального репозитория разошлась с историей удаленного репозитория. У вас два коммита, последний из них с сообщением «Второй коммит». На это указывает ваша локальная ветка. А в удаленном репозитории по прежнему есть только один, первый коммит.
  9. Внесите еще одно изменение, например, аналогичным образом добавьте константу (Создать > Константа > Готово). И зафиксируйте это изменение в локальном репозитории;
  10. Теперь вы видите, что история разошлась уже на два коммита, которые есть в вашем локальном репозитории, но которых нет в удаленном.

    Кстати, эта же информация отображается и в панели Навигатор в заголовке проекта. Стрелка вверх означает, что у вас есть коммиты, которые еще не отправлены в удаленный репозиторий. Таких коммитов два;

  11. Теперь предположим, вы выполнили еще одно изменение проекта и на этом ваша задача завершена. Ее результаты нужно отправить в удаленный репозиторий, чтобы их могли использовать другие разработчики.
    Для этого, например, добавьте документ (Создать > Документ > Готово) и в конце нажмите другую кнопку — Фиксировать и отправить...;
  12. Через некоторое время вы увидите, что после того, как изменения были зафиксированы в локальном репозитории, 1C:EDT отправила их в удаленный репозиторий и показала результат отправки. Три коммита, которые отсутствовали в удаленном репозитории, отправлены в ветку master.

    В результате истории локального и удаленного репозиториев сравнялись. Это видно в панели История: указатели веток показывают на один и тот же последний коммит.

    Также, если вы посмотрите на заголовок проекта в панели Навигатор, то увидите, что там пропали значки, обозначающие количество непереданных коммитов.

Отменить коммиты

Второй, третий и четвертый коммиты, созданные в предыдущем разделе, были тестовые. Сейчас вы их отмените так, что история хранилища вернется к началу, когда у вас был единственный первый коммит.

  1. В панели История выделите первый коммит;
  2. В его контекстном меню нажмите Сброс > Жестко (HEAD, индекс и рабочий каталог);
  3. 1C:EDT попросит вас подтвердить это действие — нажмите Сброс;
  4. В истории локального репозитория останется только первый коммит. На него будет указывать ветка master;
  5. В панели Навигатор, однако, будет видно, что в удаленном репозитории остались три коммита, которые не получены в локальный репозиторий. Это те коммиты, которые вы здесь сбросили: второй, третий и четвертый;
  6. Чтобы история удаленного репозитория стала такой-же, как в локальном репозитории, отправьте изменения в удаленный репозиторий. В панели Индексирование Git нажмите Отправить HEAD...;
  7. Установите флажок Принудительно перезаписывать ветку в удаленном репозитории, если она существует и разошлась, нажмите Отправить;
    ОПАСНО
    Используйте этот флажок с большой осторожностью! Обычно Git не позволяет обновлять удаленную ветку, которая не является предком локальной ветки, как в вашем случае. Это сделано для того, чтобы не потерять коммиты удаленного репозитория, которых нет в вашей локальной ветке (например, другие разработчики поместили их в удаленную ветку).
    Установка этого флажка снимает эту защиту и позволяет вам перезаписать удаленную ветку тем, что находится в вашей локальной ветке. Это можно делать только в том случае, когда вы точно уверены, что такая перезапись удаленной ветки не повредит ни вам, ни другим разработчикам.
  8. 1C:EDT сообщит об успешной отправке, а если вы посмотрите на заголовок проекта в панели Навигатор, то увидите, что там пропали значки, обозначающие количество непринятых коммитов.