Я хочу перенести некоторое программное обеспечение в ветку «dev». Программное обеспечение было разработано для другого компьютера с Windows, и в настоящее время я повторно инициализировал репозиторий git с нуля на машине Linux и хочу перенести свою работу в репозиторий компании и добавить свой патч в предыдущую ветку разработки.
git init
git branch -M dev
git remote add origin https://github.com/<company>/<repository>.git
git add .
git commit -m "first commit"
git pull --rebase origin dev git@gitserv:<company>/<repository>.git
последняя команда не работает, и я не понимаю своей проблемы. Во-первых, у меня есть ключ Github, который выглядит как SHA256: CUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Во-вторых, у меня есть «Токены личного доступа (классические)», которые мы обычно устанавливаем в пункте «Настройки разработчика» и которые выглядят как ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
В-третьих, у меня есть ~/ssh/config
Host gitserv
HostName git.com
IdentityFile ~/.ssh/id_rsa.github
IdentitiesOnly yes
AddKeysToAgent yes
И, конечно же, у меня есть ~/.ssh/id_rsa.github и ~/.ssh/id_rsa. Все выглядит хорошо, но последняя команда
git pull --rebase origin dev git@gitserv:<company>/<repository>.git
не работает, спросите логин/пароль и что сказано
remote: Support for password authentication was removed on August 13, 2021.
Я не понимаю своей ошибки, что я делаю не так?
@Marc, я изменил имя хоста в ~/ssh/config на «Host github» и «HostName github.com». А какой правильный формат команды rebase? Я пытаюсь использовать множество вариантов, моя последняя попытка вообще без конфигурации — git pull --rebase origin dev Alex-1347:[email protected]m/… . Ответ: «фатально: неверная спецификация»
Вам необходимо добавить содержимое вашего файла публичного ключа SSH ~/.ssh/id_rsa.github.pub
в https://github.com/settings/keys
Спасибо. К сожалению, я загрузил свой открытый ключ на Github, обновил вопрос и экран загрузки по этому поводу.
Вам нужно установить его с помощью ssh-ключа вместо имени пользователя/пароля. Просто выполните следующие действия, и вы быстро настроите свой SSH-ключ:
Создайте новый ключ SSH (или пропустите этот шаг, если ключ у вас уже есть)
ssh-keygen
Как только вы установите ключ в каталоге home/.ssh
(или Users/<your user>.ssh
под Windows), откройте его и скопируйте содержимое.
Войдите в учетную запись GitHub
Нажмите на свое имя пользователя в github (изображение профиля в правом верхнем углу)
Нажмите на SSH and PGP Keys
Нажмите на New SSH key
Вставьте свой ключ и сохраните
И все готово:-)
Теперь вам нужно снова выполнить git pull.
Спасибо. К сожалению, я загрузил свой открытый ключ на Github, обновил вопрос и экран загрузки по этому поводу.
Если да, попробуйте это, а затем потяните еще раз git config --global --unset credential.helper
for 'git pull --rebase origin dev Alex-1347:[email protected]m/…" У меня есть ответ "фатальный: недействительная ссылка"
и для «git pull --rebase origin dev gitserv@gitserv:<company>/<repository>.git» git только спрашивает у меня логин/пароль, и тогда это не удалось
Вы можете перейти в дискуссионную комнату
Или попробуйте сначала сбросить его на уровне системы: git config --system --unset credential.helper
Давайте продолжим обсуждение в чате.
Вам будет предложено ввести имя пользователя и пароль, поскольку вы установили origin
на https://github.com/company/repository.git
. HTTPS-соединения используют имя пользователя и токен, а не ключи SSH.
Если вы хотите использовать SSH для отправки и извлечения, то git remote set-url origin git@gitserv:company/repository
изменится origin
на использование SSH с указанной вами конфигурацией gitserv
.
Хорошо, Джим, ты прав. Но почему я получаю сообщение «fatal: недопустимая ссылка» для «git pull --rebase origin dev Alex-1347:[email protected]/<company>/…» и запрос имени пользователя для «git pull --rebase origin dev gitserv@gitserv:<company>/<repository>.git» — у вас есть идеи?
Alex-1347:[email protected]/...
не является допустимым URL-адресом, насколько известно Git, поэтому Git интерпретировал его как ссылку, но поскольку в вашем репозитории нет ссылки с таким именем, он отображается как «недопустимая спецификация ссылки». git@gitserv:company/repository
— действительный URL-адрес, но поскольку origin
по-прежнему указывает на HTTPS, вам будет предложено ввести учетные данные HTTPS.
«git pull --rebase origin dev gitserv@gitserv:<company>/<repository>» это моя первая идея. По этому запросу я получаю не более чем запрос логина и пароля и ошибку о том, что Git не поддерживает логин/пароль. И не более того. Тупик.
Вы читали мой ответ?
да, я начал с этого момента, но получил только запрос логина/пароля
Вам действительно стоит прочитать это первое предложение еще раз. Возможно, сделайте это дважды.
Сначала нужно проверить, что видит ваша учетная запись github
ssh -T [email protected]
Лучше всего создать новую пару ключей.
ssh-keygen -t ed25519 -C "EMAIL-for-your-Github-login"
и только после того, как любой другой пользователь операции скажет в этой теме - добавьте свой ключ к ключу SSH и затем
git remote add origin [email protected]:xxxxxx/yyyyyyyyy.git
git push --force [email protected]:xxxxxx/yyyyyyyyy.git
моя текущая конфигурация Github
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
AddKeysToAgent yes
и ошибка другого ответа - пропустить первые два шага, что является самым важным шагом
этот шаг можно пропустить только для новичков и пользователей LOL, у которых есть только одна учетная запись Github. Конечно, любой настоящий программист использует каждую учетную запись для любого нового проекта, чтобы предотвратить незаконное отслеживание проектов и деятельности программиста.
Вы пытаетесь отправить сообщение на git.com, когда используете «gitserv». Вы уверены, что это git-сервер вашей компании? Иногда вы пишете github, затем git, затем gitserv. Пожалуйста, правильно поймите формулировку/значение. В общем, добавьте свой открытый ssh-ключ на свой git-сервер, и все готово. Не имеет значения, github, gitlab или что-то еще.