Невозможно отправить в репозиторий Git на Bitbucket

149

Я создал новый репозиторий и столкнулся с странной ошибкой. Раньше я использовал Git на Bitbucket, но я только что переформатировал и теперь не могу заставить Git работать. После фиксации мне пришлось добавить свой адрес электронной почты и имя в глобальные переменные, но потом все было нормально.

Когда я пытаюсь использовать команду

git push origin master

это не работает. Я получаю это сообщение:

$ git push origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

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

Джейсон Даль
источник
4
вы можете использовать https вместо gits в своем удаленном URL. например: yourusername@bitbucket.org/teamname/repository.git
Али
1
Я решил ту же проблему, внимательно следуя руководству Atlassian о том, как настроить SSH на вашем компьютере: confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git
sws
аналогичная проблема: stackoverflow.com/questions/12940626/…
JMoran

Ответы:

236

Написание этого для тех, кто только начинает работать с Git и BitBucket в Windows и не так хорошо знаком с Bash (поскольку это и общая проблема, и высокий рейтинг Google при поиске сообщения об ошибке в вопросе).

Для тех, кто не возражает против HTTPS и кто ищет быстрое решение, прокрутите до конца этого ответа, чтобы получить инструкции в разделе ДЛЯ ЛЕНИВЫХ

Для тех, кто хочет решить настоящую проблему, следуйте приведенным ниже инструкциям:

Как можно быстрее устранить проблему с SSH

Это набор инструкций, полученных из URL-адреса, на который ссылается VonC. Он был изменен, чтобы сделать его максимально гибким и лаконичным.

  • Не вводите $строки или строки, которые не начинаются с $(это $означает, что вы вводите это в GitBash).

  • Откройте GitBash

Установите глобальную информацию, если вы еще этого не сделали:

$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

Проверьте OpenSSH:

$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...

Видите что-то подобное?

  • Да: продолжить.
  • Нет: перейдите в раздел ДЛЯ ЛЕНИВШИХ или следуйте связанной статье от VonC.

Посмотрите, сгенерировали ли вы уже ключи:

$ ls -a ~/.ssh/id_*

Если файлов два, следующий шаг можно пропустить.

$ ssh-keygen

Оставьте все по умолчанию, введите кодовую фразу. Теперь вы должны увидеть результаты с помощью этой команды:

$ ls -a ~/.ssh/id_*

Проверьте существующий файл конфигурации:

$ ls -a ~/.ssh/config

Если вы получили результат, проверьте этот файл на наличие ошибочной информации. Если файла нет, сделайте следующее:

$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config

Подтвердите содержание:

$ cat ~/.ssh/config

Host bitbucket.org
 IdentityFile ~/.ssh/id_rsa
  • Один пробел перед "IdentityFile" обязателен.

Убедитесь, что вы запускаете агент SSH каждый раз при запуске GitBash:

$ cat ~/.bashrc
  • Если вы видите вызываемую функцию start_agent, этот шаг уже выполнен.
  • Если файла нет, продолжайте.
  • Если есть файл, который не содержит этой функции, у вас неприятная ситуация. Возможно, добавить к нему безопасно (используя приведенные ниже инструкции), но может и не быть! Если вы не уверены, сделайте резервную копию вашего .bashrc перед тем, как следовать приведенным ниже инструкциям, или перейдите к разделу ДЛЯ ЛЕНИВШИХ .

Введите в GitBash следующее, чтобы создать файл .bashrc:

$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo "    echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo "    # spawn ssh-agent" >> ~/.bashrc
$ echo "    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    echo succeeded" >> ~/.bashrc
$ echo "    chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "    /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo "     . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "     ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo "        start_agent;" >> ~/.bashrc
$ echo "    }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo "    start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc

Убедитесь, что файл был успешно создан (ваш файл должен отличаться только там, где появляется «yourusername»):

$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  • Закройте GitBash и снова откройте его.
  • Вас должны попросить ввести кодовую фразу (для файла SSH, который вы создали ранее).
  • Если нет запроса, значит, вы либо не установили кодовую фразу, либо GitBash не запускает скрипт .bashrc (что было бы странно, поэтому подумайте о том, чтобы просмотреть его содержимое!). Если вы запускаете это на Mac (OS X), .bashrcпо умолчанию не выполняется - .bash_profileесть. Чтобы исправить это, поместите этот фрагмент в свой .bash_profile:[[ -s ~/.bashrc ]] && source ~/.bashrc

Если бы вы не ввели кодовую фразу, вы бы увидели что-то подобное при запуске GitBash:

Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)

И следующее должно вернуть результаты:

$ ssh-add -l

Однако, если вы получите следующее из ssh-add -l:

Could not open a connection to your authentication agent.

Это не породило агент SSH, и, вероятно, причиной является ваш .bashrc.

Если при запуске GitBash вы увидите следующее:

Initializing new SSH agent...
sh.exe": : No such file or directory

Это означает, что вы забыли экранировать $ с помощью \ при выводе на файл (т.е. переменные были расширены). Чтобы решить эту проблему, заново создайте свой .bashrc.

Убедитесь, что агент запущен и ваши ключи добавлены:

$ ssh-add -l

Должен вернуть что-то подобное:

2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)

Выполните следующую команду, чтобы получить свой открытый ключ:

$ cat ~/.ssh/id_rsa.pub

(он должен вернуть что-то, начинающееся с "ssh-rsa ......"

  • Щелкните значок окна GitBash
  • Нажмите Edit
  • Нажмите Отметить
  • Выделите открытый ключ с помощью мыши (включая ssh-rsaначальный и конечный == youremail@yourdomain.comбит)
  • Щелкните правой кнопкой мыши окно (выполняет копию)
  • Вставьте свой открытый ключ в Блокнот.
  • Удалите все символы новой строки так, чтобы это была только одна строка.
  • Нажмите CTRL+Aзатем, CTRL+Cчтобы снова скопировать открытый ключ в буфер обмена.

Настройте свой закрытый ключ с помощью BitBucket, выполнив следующие действия:

  • Откройте браузер и перейдите на сайт BitBucket.org.
  • Войти на BitBucket.org
  • Щелкните свой аватар (вверху справа)
  • Нажмите Управление учетной записью
  • Щелкните Ключи SSH (в разделе Безопасность в левом меню)
  • Нажмите Добавить ключ
  • Введите Global Public Keyярлык
  • Вставьте открытый ключ, который вы скопировали из Блокнота

Global Public KeyТеперь вход должен быть виден в списке ключей.

  • Вернуться в GitBash
  • cd в каталог, содержащий ваш проект
  • Измените источник на вариант SSH (этого не будет, если вы выполнили шаги FOR THE LAZY )

Проверьте свои пульты:

$ git remote -v

Переключитесь на URL-адрес SSH:

$ git remote set-url origin git@bitbucket.org:youraccount/yourproject.git

Проверить, что все в рабочем состоянии:

$ git remote show origin

Вы должны увидеть что-то вроде этого:

Warning: Permanently added the RSA host key for IP address '...' to the list of known hosts.
* remote origin
  Fetch URL: git@bitbucket.org:youruser/yourproject.git
  Push  URL: git@bitbucket.org:youruser/yourproject.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

СДЕЛАННЫЙ!

Вы можете выбрать использование HTTPS вместо SSH. Вам потребуется ввести свой пароль во время удаленных операций (он временно кешируется после того, как вы введете его один раз). Вот как вы можете настроить HTTPS:

ДЛЯ ЛЕНИННЫХ

Вы должны исправить проблему SSH, как описано VonC; однако, если вы спешите совершить фиксацию и у вас нет инструментов / времени / знаний для создания нового открытого ключа прямо сейчас , установите в качестве источника альтернативу HTTPS:

> https://accountname@bitbucket.org/accountname/reponame.git

Использование инструмента с графическим интерфейсом, такого как TortoiseGit или инструментов командной строки .

Вот документация этого альтернативного URL-адреса происхождения.

Командная строка для добавления источника, если он не существует:

git remote add origin https://accountname@bitbucket.org/accountname/reponame.git

Командная строка для изменения существующего источника:

git remote set-url origin https://accountname@bitbucket.org/accountname/reponame.git

ПРИМЕЧАНИЕ: имя вашей учетной записи не является вашим адресом электронной почты.

Вы также можете указать свою глобальную информацию:

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

Затем повторите попытку (повторная фиксация не требуется)

git push origin master
Грэм Уикстед
источник
1
Иногда бывает, что вы добавили все, что упомянуто выше, ~/.bashrcно все же при запуске команды ssh-all -lОна все еще отображается. No agent В этом случае попробуйте эту команду, ssh-agent /bin/bashи она будетInitializing new SSH agent...
shinesecret
Просто любопытно, и это новый вопрос. Предполагается, что SSH_ENV и SSH_AGENT_PID должны быть заменены нашей собственной информацией? где мы можем это найти? Я думаю, что у меня пробел в информации, чем у вас.
JGallardo
1
@JGallardo - Хороший вопрос! Хорошая новость - нет. Это переменные в сценариях оболочки bash - они похожи на переменные среды в пакетных файлах.
Graeme Wicksted
Странно, что в моем открытом ключе в конце это не «myemail@mydomain.com», а «myusername@mycomputername.local»
Ван Дю Тран
я получаю сообщение об ошибке после этого процесса «ошибка: невозможно открыть .git / FETCH_HEAD: Permission denied»
CyberAbhay
60

Эта ошибка также возникает, если вы забыли добавить закрытый ключ в ssh-agent. Сделайте это с помощью:

ssh-add ~/.ssh/id_rsa
Маттиас Браун
источник
5
Это был ответ в моем случае, о чем я всегда забываю, когда создаю новый ключ.
амерткара
это сработало для меня :) но вам нужно убедиться, что у вас уже есть закрытый ключ ssh в вашем локальном каталоге и открытый ключ, зарегистрированный в вашей учетной записи bitbucket
Даниэль
27

Переформатирование означает, что вы, вероятно, удалили свой открытый и закрытый ключи ssh (в ~ / .ssh).

Вам необходимо регенерировать их и опубликовать свой открытый ключ ssh в своем профиле BitBucket, как описано в разделе « Использование протокола SSH с Bitbucket » после « Настройка SSH для Git с помощью GitBash ».

Учетные записи-> Управление учетными записями-> Ключи SSH:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_manage_account.png

Затем:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_add_ssh.png

Изображения из « Интеграция Mercurial / BitBucket с программным обеспечением JetBrains »

VonC
источник
9
Просто чтобы добавить к этому немного. Если вы используете BitBucket (как показано на скриншоте), убедитесь, что вы добавляете SSH-ключ к SSH-ключам вашей учетной записи (Accounts-> Manage Accounts-> SSH Keys). Добавление его в качестве ключа развертывания через настройки репозитория позволит использовать этот ключ только для операций только для чтения (без фиксации).
welshk91
@ welshk91 Согласен. Я изменил ответ, чтобы добавить более подробные фотографии.
VonC
1
@VonC - спасибо за публикацию. Я тщетно пытался заставить это работать на машине с Windows, и это наконец помогло. Спасибо, Бен
ben18785
21

Я решил это, удалив пульт с помощью команды:

git remote remove origin

а затем попытался добавить удаленный, используя https url вместо ssh

git remote add origin httpsUrl

Он запрашивает учетные данные github. Введите учетные данные, а затем попробуйте нажать на git, используя:

git push origin master
Анкит Арора
источник
1
это помогло мне. это правильный ответ в моем случае. спасибо
binsnoel
Меня устраивает. Я не
удалял
Спасибо за прямой ответ. Работает как шарм - это именно то, что я искал.
Александра
4

У меня такая же проблема. Мои ключи SSH были установлены правильно. Я исправил эту проблему вот так.

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

Рафаэль
источник
1
Как странно. Сегодня у меня та же проблема, что и с OP, но без переустановки или каких-либо системных изменений мои ключи были в порядке. Этот git remote addпроцесс просто не работал сегодня - я получил ошибку аутентификации при попытке нажать - но удаление .git, а затем использование git cloneи повторное копирование моего источника (просто README.md) вместо этого работает нормально. Спасибо, Рафаэль - я бы точно не подумал попробовать это, если бы не твой ответ.
Крис
рад, что это решение вам помогло
Rafael
1
Спасибо за Ваш ответ. Мне удалось исправить проблему, просто создав новый каталог и клонировав его в этом новом каталоге. mkdir /tmp/JUNK; cd /tmp/JUNK; git clone ...; cd ..; rm -rf JUNK
Red Cricket
2

Два небольших уточнения, которые могут спасти кого-то от путаницы, через которую я прошел:

1 - URL-адреса подключения отличаются для HTTPS и SSH

При подключении через https вы используете

https://your_account_name@bitbucket.org/owner-account/repo-name.git

однако при подключении через SSH имя учетной записи всегда "git"

ssh://git@bitbucket.org/owner-account/repo-name.git

Попытка подключиться к SSH с именем вашей учетной записи впереди приведет к ошибке, полученной исходным плакатом. Вот как вы можете выполнить тест, подключившись к git @, а затем по ошибке попробовать ввести свое имя пользователя и увидеть ошибку.

2. Использование ключей SSH для командных учетных записей будет прекращено в 2017 г.

Если вы настраиваете ключи SSH для групповых учетных записей, они рекомендуют переключить их на личные учетные записи. Полезный совет, чтобы избежать е

Пауло
источник
1

Если вы используете SourceTree (я использую 2.4.1), я нашел более простой способ сгенерировать ключ SSH и добавить его в свои настройки Bitbucket. Это решило проблему для меня.

  1. В SourceTree перейдите в Настройки.
  2. Перейдите на вкладку Учетные записи и выберите свою учетную запись.
  3. Должна быть возможность сгенерировать и скопировать SSH-ключ в буфер обмена.
  4. После того, как вы скопируете это, перейдите в Bitbucket в своем браузере. Перейдите в [аватар] -> Настройки Bitbucket.
  5. Перейдите к SSH-ключам.
  6. Нажмите Добавить ключ
  7. Вставьте ключ, который вы скопировали.

Я получил электронное письмо от Bitbucket с подтверждением того, что в мою учетную запись был добавлен SSH-ключ.

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

ls -la ~/.ssh

Как заявляли другие, эта документация мне помогла: используйте протокол SSH с Bitbucket Cloud

Сара
источник
1

Выполните ssh, как в руководстве по Atlassian, и убедитесь, что закрытый ключ вставлен в профиль, а не в репозиторий :)

Гектор
источник
Не могли бы вы дать ссылку на изложенное Atlassian tutorial? Какие шаги нужно выполнить, чтобы вставить ключ в профиль и как узнать, вставлен ли он в репозиторий?
EmmanuelB
Она прямо здесь. Выберите лучший вариант для вашей комбинации корпусов! confluence.atlassian.com/bitbucket/…
Hector
0

Я получил ту же ошибку для одного репозитория - внезапно все остальные были и продолжают работать нормально, когда я пытаюсь нажать коммиты. Проблема оказалась с ключом SSH (как вы уже знаете из предыдущих комментариев) - на битбакете перейдите к, View Profileзатем нажмите Manage Account.

Слева нажмите на, SSH Keysзатем добавьте тот, который у вас есть в вашей системе, в каталог ~ / .ssh /.

Если у вас еще нет сгенерированного файла - используйте инструкции из одного из сообщений, но убедитесь, что вы используете либо файл id_dsa.pub по умолчанию, либо файл с индивидуальным именем, а позже потребуется -iопция с путем к ключу, когда вы Подключить IE

ssh -i ~/.ssh/customkeyname username@ip_address

После того, как вы добавили свой локальный ключ в свою учетную запись на bitbucket, вы сможете начать взаимодействие с вашим репозиторием.

Себастьян Сулински
источник
0

Я нашел решение, которое лучше всего сработало для меня, - разбить толчок на более мелкие части.

и удаление больших файлов изображений скриншотов (10 МБ +) из коммитов

Безопасность не была проблемой в конце концов, больше об ограничениях файлов bin

Гарри Бош
источник
Вы получили указанную выше ошибку, отмеченную OP, и это не было проблемой аутентификации / безопасности? Это был размер вашего коммита?
JohnZaj
Вот что случилось
Гарри Бош
0

Эта ошибка также появляется, когда репозиторий не существует. Я пробовал все ответы, пока не увидел, что в названии репо отсутствует тире

Мирко
источник
0

При ошибках:

[ошибка] доступ к репозиторию запрещен. доступ через ключ развертывания доступен только для чтения. фатальный: не удалось прочитать из удаленного репозитория. Убедитесь, что у вас есть правильные права доступа и репозиторий существует.

[ошибка] фатальный: не удалось прочитать из удаленного репозитория.

[ошибка] фатальный: невозможно найти удаленного помощника для https

Я решил выполнить следующие шаги:

Сначала установите эти зависимости:

$ yum install expat expat-devel openssl openssl-devel

Затем удалите git:

$ yum remove git git-all

Теперь соберите и установите Git в последней версии, в этом случае:

$ wget https://github.com/git/git/archive/v2.13.0.tar.gz
$ tar zxf v.2.13.0.tar.gz
$ cd git-2.13.0/

Затем для настройки:

$ make configure
$ ./configure --with-expat --with-openssl

И, наконец, установите так:

$ make 
$ make install install-doc install-html install-info

вот и все, теперь настройте ваше репо с https:

$ git remote add origin https://github.com/*user*/*repo*.git
# Verify new remote
$ git remote -v

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

Йохан Моралес
источник
0

Я получил эту ошибку

Подключение к bitbucket.org закрыто удаленным хостом. фатальный: не удалось прочитать из удаленного репозитория. Убедитесь, что у вас есть правильные права доступа.

Тогда я попробовал

git config --global user.email "you@example.com"

работал без кавычек.

Вкредды Коматиредди
источник
0

Я обнаружил, что командной строке git не нравятся ключи, сгенерированные моим конкурсом (Windows 10).

См. Мой ответ на Serverfault

HostMyBus
источник
0

Я использую macOS, и хотя я установил свой открытый ключ в битбакете, в следующий раз, когда я попытался нажать, я получил

доступ к репозиторию запрещен.

фатальный: не удалось прочитать из удаленного репозитория.

Убедитесь, что у вас есть правильные права доступа и репозиторий существует.

Что мне нужно было сделать, так это шаг 2. Добавьте ключ к ssh-agent, как описано в руководстве по настройке SSH-ключей Bitbucket и особенно на третьем шаге:

(только для macOS) Чтобы ваш компьютер запомнил ваш пароль при каждом перезапуске, откройте (или создайте) файл ~ / .ssh / config и добавьте в него следующие строки:

Хост *
UseKeychain да

Надеюсь, это поможет пользователю Mac с той же проблемой.

Sstauross
источник
0

У меня была эта проблема, и я думал, что сошел с ума. Пользуюсь SSH 20 лет. и git через SSH с 2012 года ... но почему я не могу получить свой репозиторий bitbucket на своем домашнем компьютере?

ну, у меня есть две учетные записи Bitbucket и 4 ключа SSH, загруженных в мой агент. даже если мой .ssh / config был настроен на использование правильного ключа. когда ssh инициализировал соединение, он использовал их в порядке загрузки в агент. поэтому я входил в свою личную учетную запись Bitbucket.

затем появляется Запрещенная ошибка при попытке получить репо. имеет смысл.

Я выгрузил ключ у агента

ssh-add -d ~/.ssh/personal_rsa

тогда я мог бы получить репозиторий.

... Позже я узнал, что могу заставить его использовать только указанную личность

 Host bitbucket.org-user2
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user2
     IdentitiesOnly yes

Я не знал об этом последнем варианте IdentitiesOnly

из самой документации bitbucket

https://blog.developer.atlassian.com/different-ssh-keys-multiple-bitbucket-accounts/

Матьё Ж.
источник
0

Это может быть не для всех, но я все же дам ответ, если у кого-то такая же причина. В основном у меня две учетные записи Bitbucket, каждая из которых имеет два разных открытых ключа. Выполнив запуск, ssh -Tv bitbucket.orgмне удалось увидеть, что мой ноутбук отправляет неверный ключ (но поскольку оба открытых ключа зарегистрированы в битбакете, ключ все еще утвержден, то, поскольку ключ связан с другой учетной записью, которая не имеет доступа к репо, я нажимая, толчок отклоняется).

Итак, я последовал этому руководству, и моя проблема исчезла: https://blog.developer.atlassian.com/different-ssh-keys-multiple-bitbucket-accounts/

Джарвис Луонг
источник
0

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

Документация Git [https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh], если вы предпочитаете следующую документацию - это далеко более подробно и достойно прочтения, чтобы понять, почему были кратко изложены следующие шаги.

Мой контрольный список Git: -

  1. Основная ветка изменилась на главную
  2. Если вы инициализировали свое репо и хотите начать с нуля, отключите git, с помощью $rm -rf .gitкоторого рекурсивно удаляет git
  3. Убедитесь, что вы не используете «Apple Git». Типа which gitдолжно быть сказано /usr/local/bin/git- если вы устанавливаете git с Homebrew$brew install git
  4. Настройте свое имя и адрес электронной почты для коммитов (обязательно используйте адрес электронной почты, который вы зарегистрировали в Github):
$git config --global user.name "Your Name"
$git config --global user.email "you@example.com"
  • Настройте git для отслеживания изменений регистра в именах файлов:
$git config --global core.ignorecase false

Если вы допустили ошибку, вы можете обновить файл, $ls -aчтобы найти файл, а затем $open .gitignoreотредактировать его, сохранить и закрыть.

  1. Свяжите свой локальный компьютер с репо с помощью ключа SSH. Ключи SSH - это способ идентификации доверенных компьютеров без использования паролей.
    Шаги по созданию нового ключа
  • Создайте новый ключ SSH, набрав ssh-keygen -t rsa -C "your_email@example.com"СОХРАНИТЬ КЛЮЧ.
  • Вам будет предложено указать файл для сохранения ключа и кодовую фразу. Нажмите Enter для обоих шагов, оставив оба параметра пустыми (имя по умолчанию, без парольной фразы).
  • Добавьте свой новый ключ в ssh-agent: ssh-add ~/.ssh/id_rsa
  • Добавьте свой SSH-ключ в GitHub, войдя в Github, зайдя в настройки учетной записи и нажав SSH-ключи . Нажмите Добавить ключ SSH.

Вы также можете найти его, щелкнув изображение своего профиля и клавишу редактирования под ним в левой навигационной панели.

  • Скопируйте свой ключ в буфер обмена с помощью команды терминала: pbcopy < ~/.ssh/id_rsa.pub

  • В поле Название укажите что-нибудь, что идентифицирует ваш компьютер, например MacBook Air YOUR_NAME.

  • В поле Ключ просто нажмите cmd+, Vчтобы вставить ключ, который вы создали ранее - не добавляйте и не удаляйте символы и или пробелы к ключу.

  • Нажмите Добавить ключ и проверьте, все ли работает в терминале, набрав: ssh -T git@github.com

    Вы должны увидеть следующее сообщение:

    Hi YOUR_NAME! You've successfully authenticated, but GitHub does not provide shell access.
    

Теперь, когда ваш локальный компьютер подключен к облаку, вы можете создать репо в Интернете или на своем локальном компьютере. Git изменил имя master для ветки main. При связывании репозиториев проще использовать ключ HTTPS, чем ключ SSH. Хотя вам нужен SSH для первоначальной привязки репозиториев, чтобы избежать ошибки в вопросе.

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Следуйте инструкциям, которые вы теперь получаете в своем репо - GitHub добавил дополнительный шаг для создания ветки (время написания октябрь 2020 г.).

  • для создания нового репозитория в командной строке echo "# testing-with-jest" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin - (используйте URL HTTPS, а не SSH) git push -u origin main

  • для отправки существующего репозитория из командной строки git remote add origin (использовать URL HTTPS, а не SSH) git branch -M main git push -u origin main

Если вы ошиблись, вы всегда можете начать все сначала, удалив инициализацию из папки git на вашем локальном компьютере $rm -rf .gitи начав заново, но полезно сначала проверить, что ни один из вышеперечисленных шагов не пропущен, и всегда лучший источник истины документацию - даже если ее читать и понимать дольше!

Сумы
источник
-1

Просто попробуй

git remote add origin <HTTP URL>
Ашок Джоши
источник
1
нам не нравится вводить имя пользователя / пароль каждый раз, когда мы загружаем / отправляем в bitbucket / github / etc /
Матье Дж.