Как предотвратить требование имени пользователя и электронной почты в команде repo init?

Вопрос или проблема

Я пытаюсь выполнить следующую команду в Manjaro с sudo или без него

repo init -u https://github.com/LineageOS/android.git -b lineage-22.1 --git-lfs

Тем не менее, всегда возникает следующая ошибка

Downloading Repo source from https://gerrit.googlesource.com/git-repo

...
    )
git_command.GitCommandError: GitCommandError: 'var GIT_COMMITTER_IDENT' on manifests failed
stderr: Committer identity unknown

*** Пожалуйста, укажите, кто вы.

Выполните

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

чтобы настроить стандартную личность вашего аккаунта.

Почему я должен предоставить email и username при скачивании из git?
У меня нет аккаунта.

Вам не нужен аккаунт Git.

Это всего лишь запрос локальной идентификации; вы можете ввести фальшивые данные, если хотите.

Все это говорит о том, что в вашем локальном Git нет связанной с вами идентификации:

*** Пожалуйста, укажите, кто вы.

Выполните

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

чтобы настроить стандартную личность вашего аккаунта.

Когда вы выполняете эти команды git config --global user., они просто присваивают email и name локально. Нет риска того, что эти данные будут “утекли” куда-либо с вашей системы.

Не беспокойтесь об этом.

И если вы действительно обеспокоены, просто введите несуществующие значения для email и name. Например, что-то такое:

git config --global user.email "[email protected]"
git config --global user.name "Nope Nope"

Тем не менее, почему вы запускаете эту команду как repo init -u?

Тем не менее, почему вы выполняете git clone вот так:

repo init -u https://github.com/LineageOS/android.git -b lineage-22.1 --git-lfs

Не совсем понятно, какова конечная цель — я вижу, что это есть в их документации GitHub — но вы должны просто выполнить эту команду:

git clone https://github.com/LineageOS/android.git

И это должно сработать. Просто перейдите в каталог, который синхронизирован так:

cd android

И проверьте ветви вот так:

git branch

И вы должны быть на ветке lineage-22.1 по умолчанию, так как это стандартная ветка.

Просто хотел сказать, что другой ответ можно упростить до следующей однострочной команды:

git clone -b lineage-22.1 https://github.com/LineageOS/android.git

Это клонирует репозиторий и выберет правильную ветку одной командой.

И оно не запросит имя пользователя или email.

.

Ответ или решение

Конечно, давайте разберем проблему с точки зрения эксперта в области ИТ.

Теория

Команда repo init используется для инициализации управления версиями проектов, которые используют Google’s Repo tool для работы с несколькими Git репозиториями одновременно. Это становится особенно актуально для проектов, связанных с Android, таких как LineageOS. Однако, при использовании этой команды, Git требует от пользователя указать его имя и email адрес для идентификации. Это не связано с наличием или отсутствием аккаунта на GitHub или другом хостинге репозиториев. Git использует эти данные для создания коммитов и метаданных, и эта информация остаётся локальной.

Запрос на идентификацию возникает из-за того, что в вашем глобальном Git конфигурационном файле отсутствуют настройки user.name и user.email. Эти настройки необходимы для того, чтобы Git мог правильно связывать изменения в репозитории с конкретными действиями разработчиков, даже если эти данные не передаются никуда за пределы вашего компьютера. При работе с репозиториями, особенно в крупных проектах, такие данные помогают сохранять читабельность истории коммитов.

Пример

Допустим, вы решили загрузить код из репозитория LineageOS без указания персональных данных. Вы запускаете следующую команду в вашей операционной системе Manjaro:

repo init -u https://github.com/LineageOS/android.git -b lineage-22.1 --git-lfs

Однако, без предварительно настроенной конфигурации Git, система выведет ошибку, требующую указать user.email и user.name:

git_command.GitCommandError: GitCommandError: 'var GIT_COMMITTER_IDENT' on manifests failed
stderr: Committer identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "<a href="https://superuser.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cba5a4bbae8ba5a4bbaee5a8a4a6">[email protected]</a>"
  git config --global user.name "Your Name"

to set your account's default identity.

Как видите, Git просит ввести данные для своей локальной конфигурации — это не связано с доступом к удалённым сервисам и требуется только для корректного ведения истории изменений.

Применение

Чтобы устранить данную проблему и продолжить работу с командой repo init без указания реальных данных, вы можете ввести фиктивные данные. Идея в том, чтобы система не просила эти данные в будущем и не прерывала вашу работу запросами об идентификации. Это можно сделать следующим образом:

git config --global user.email "fake-email@example.com"
git config --global user.name "Fake Name"

Эти настройки сохраняются в глобальном конфигурационном файле Git для вашего пользователя и применяются ко всем репозиториям по умолчанию. Использование фиктивных данных безопасно, если вы уверены, что ваши коммиты не окажутся в открытом доступе, или если вы не планируете публиковать репозитории.

Если вы хотите просто загрузить репозиторий без использования repo и минимизировать сложность, вы можете сделать это через команду git clone, которая не требует указания ни имени, ни email, пока вы не начнёте создавать коммиты:

git clone -b lineage-22.1 https://github.com/LineageOS/android.git

После выполнения этой команды вы получите локальную копию ветки lineage-22.1 без необходимости вводить лишнюю информацию.

Вывод

Проблема с требованием указать имя и email связана исключительно с конфигурацией вашего локального Git и необходимостью этой информации для ведения истории коммитов. Введение фиктивных данных решает эту проблему, и эти данные не будут утекать за пределы вашей локальной среды без вашего желания. Альтернативный подход с использованием git clone может быть более подходящим для однократного получения исходного кода без необходимости в дальнейшей синхронизации с несколькими репозиториями.

Оцените материал
Добавить комментарий

Капча загружается...