git push локальная ветка в удаленный репозиторий - PullRequest
2 голосов
/ 24 ноября 2011

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

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

git push origin anshumanbhartiya
fatal:The remote end hung up unexpectedly

Здесь anshumanbhartiya - это название ветви, над которой я работал, и я пытаюсь переместить эту ветку в источник, откуда я клонировал.

MyВопрос в том, что я знаю, что должен использовать предоставленный мне ключ, чтобы протолкнуть изменения, но я просто не могу понять, как использовать этот ключ.В каталоге ~ / .ssh / у меня уже есть собственный закрытый и открытый ключ, который я сгенерировал при настройке github.Я не знаю, что делать с ssh ключом моих друзей.

Пожалуйста, помогите!

Ответы [ 4 ]

1 голос
/ 29 ноября 2011

Я решил проблему.Когда я делал git config --list из моего локального каталога, URL удаленного источника показывал что-то вроде git: //git.domain/git_repo.git.Это должно быть изменено с git: //git.domain/git_repo.git на что-то вроде git@git.domain: /git_repo.git

Это потому, что git: // url не принимает никаких записей,Когда мы сначала клонируем репозиторий git, вместо того, чтобы делать git клон git: //, мы должны были выполнить git clone git@git.domain.

После этого нам нужно убедиться, что наши ssh-ключиправильно настроены.В моем случае я восстановил новую пару ключей между государственным и частным секторами.В этом не было необходимости, просто чтобы быть уверенным, что я это сделал.Я также добавил новый файл в ~ / .ssh / config и добавил файл хоста, пользователя и удостоверения личности, чтобы вместо моего использовался закрытый ключ репо моего друга.

И, наконец, при нажатии наВ своем удаленном репо я должен был дать что-то вроде git push ssh: //git@git.doman/git_repo.git.Это был, наверное, самый важный шаг.Мы не должны пропустить git@git.com после ssh: //

0 голосов
/ 24 ноября 2011

Я не эксперт, но я думаю, что вам может потребоваться заменить локальный закрытый ключ (id_rsa) в вашем пользовательском каталоге (это определяется в переменных среды вашего компьютера) и должен находиться в подкаталоге с именем .ssh. Сначала сделайте резервную копию существующих ключей, хотя

0 голосов
/ 24 ноября 2011

Сначала слово о ветках, когда вы клонировали хранилище своих друзей, вы на самом деле уже создали свою собственную ветку. Просто происходит удаленное отслеживание ветки ваших друзей, что на самом деле просто сокращает ваши git-push команды.

Сказав это, я думаю, что предпочтительным способом выполнения этого рабочего процесса является создание проекта ваших друзей на github в вашем собственном хранилище. Затем вы должны отправить only в репозиторий, в котором должны быть правильно установлены учетные данные ssh. Затем ваш друг может вытащить из вашего хранилища. У Github есть запросов на получение , или вы можете просто попросить своего друга вручную вытащить из вашего репо.

Стоит отметить, что этот метод по-прежнему позволяет вам извлекать исправления из его репозитория.

0 голосов
/ 24 ноября 2011

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

Или вы можете использовать ~/.ssh/config, чтобы принудительно использовать альтернативный ключ при подключении к данному конкретному хосту.

Также вы можете добавить этот ключ в ssh-agent, если вы его используете (ssh-add keyfile).

...