- Вопрос или проблема
- Вам не нужен аккаунт на GitHub.
- Это всего лишь запрос на локальную идентификацию Git; вы можете подделать его, если хотите.
- Сказав это, зачем вы запускаете эту команду как repo init -u?
- Ответ или решение
- Теория
- Пример
- Применение
- 1. Установите локальную конфигурацию Git
- 2. Безопасность и конфиденциальность
- 3. Альтернативный подход через git clone
- Заключение
Вопрос или проблема
Я пытаюсь выполнить следующую команду в 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'
stderr: Неизвестная личность автора
*** Пожалуйста, укажите, кто вы.
Запустите
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
для установки учетной записи по умолчанию.
Почему я должен предоставлять адрес электронной почты и имя пользователя, когда скачиваю с GitHub? У меня нет аккаунта.
Вам не нужен аккаунт на GitHub.
Это всего лишь запрос на локальную идентификацию 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
?
Обновление 2025-03-06: Согласно комментарию от phuclv repo init
необходимо для сохранения подмодулей:
«
repo
инструмент это Android эквивалент “подмодулей” для управления несколькими различными git репозиториями, это не для клонирования одного репозитория. Командаrepo init
создаст симлинки и другие структуры, необходимые для его работы, так что простоgit clone
не сработает.»
Зная это, мои инструкции по git clone
приведены ниже только для справки. Установите имя (реальное или вымышленное) для name
и email
, а затем используйте repo init
, как указано.
Сказав это, зачем вы выполняете этот 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
Это позволяeт клонировать репозиторий и перейти на правильную ветку одной командой.
И это не запрашивает имя пользователя или адрес электронной почты.
Ответ или решение
Чтобы эффективно предотвратить необходимость ввода имени пользователя и адреса электронной почты при выполнении команды repo init
на Manjaro, важно понять, почему такое требование возникает в принципе и как его можно обойти или удовлетворить правильным способом. Мы начнем с теоретического объяснения, перейдем к практическим примерам и завершим применением полученных знаний.
Теория
Когда вы используете команду repo init
для инициализации репозитория, инструмент repo
опирается на конфигурации Git для установления вашей идентификации как пользователя. Это связано с тем, что repo
— это скрипт на Python, управляющий множественными Git репозиториями, и он использует команду Git для операций исходного кода. Git требует установления идентификации (имя пользователя и адрес электронной почты) из-за того, что каждый коммит в системе контроля версий должен быть ассоциирован с пользователем. Это делает репозитории надежными и обеспечивает историю изменений.
Пример
Когда вы пытаетесь инициализировать репозиторий с помощью следующей команды:
repo init -u https://github.com/LineageOS/android.git -b lineage-22.1 --git-lfs
и встречаете ошибку, подобную следующей:
Committer identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Это связано с тем, что ваш локальный Git не настроен с информацией, необходимой для авторизации изменений или взаимодействий с удаленными серверами.
Применение
1. Установите локальную конфигурацию Git
Чтобы избежать повторных запросов о вашем имени и электронной почте, выполните следующие команды в терминале, заменив указанную информацию на ваши данные или фиктивные значения:
git config --global user.email "fakeemail@example.com"
git config --global user.name "Fake Name"
Эти команды настроят глобальную конфигурацию Git, которая используется в любых директориях и репозиториях на вашем устройстве. Если вы предпочитаете, чтобы эти изменения применялись только к текущему проекту, можете пропустить флаг --global
, выполнив команды в корневом каталоге вашего проекта.
2. Безопасность и конфиденциальность
Важно отметить, что указанные вами имя и адрес электронной почты не пересылаются ни на один удаленный сервер при клонировании репозиториев, поскольку единственное их предназначение — это внутренний учет учета изменений. Если вы не делаете коммитов или push на удаленный сервер, данные остаются локальными. Таким образом, вы можете выбрать любые значения для этой информации.
3. Альтернативный подход через git clone
Если ваш случайный сценарий не требует инсталляции нескольких репозиториев, можно обойти repo init
и использовать команду git clone
, которая не будет требовать данных о пользователе, если для текущего сценария они не необходимы:
git clone -b lineage-22.1 https://github.com/LineageOS/android.git
Этот способ подойдет, если репозиторий не содержит подмодулей, или если вам не требуется сложная инфраструктура управления зависимостями, которую предлагает repo
.
Заключение
Конфигурация пользовательских данных для Git является важной частью работы с системами контроля версий, поддерживая ваш учет изменений и историю. Даже если вы не планируете активно использовать Git для коммитов и пушей, предварительная настройка этой информации освободит вас от нежелательных диалогов и установит правильный технический прием работы с репозиториями. Таким образом, выполнение указанных выше действий решит проблему, с которой вы столкнулись, и сделает вашу работу с repo
и Git более комфортной и непрерывной.