Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Подключение к чужому репозиторию GitHub

#git #github #git_push


Не могу внести изменения в репозиторий гитa. 
Сам репозиторий успешно клонирован. Но после внесения комита и команды git push появляется
следующие remote:


  Permission to %Полное имя репозитория% denied to %Мой логин на GitHub%.


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

Как решается беда?  

Если дело в отсутствии прав доступа, то как их выдать (со стороны владельца репозитория)
    


Ответы

Ответ 1



Вы пришли в Git с привычками из SVN. Git — это распределённая система управления версиями. Это означает, что по умолчанию каждый — ПЖ в своём репозитории, но пацак — в чужом. Когда вы клонировали репозиторий, то у вас на компьютере возникла полноценная копия репозитория, в которой вы можете создавать ветки, в которую вы можете вытягивать изменения из чужих репозиториев и так далее. Но вот репозиторий у владельца свой, отдельный, и своими грязными пацакскими ручонками туда лезть не надо. Если владелец решит выдать вам жёлтые штаны и права на доступ к своему репозиторию — тогда уже можете творить что хотите. Но пока КЦ мало. В целом, картина такая: у владельца есть репозиторий на гитхабе и, скорее всего, как минимум один локальный репозиторий на своём компьютере. С точки зрения Git вам достаточно клонировать его удалённый репозиторий, сделать изменения, пушнуть их свой репозиторий, а потом этими изменениями поделиться с владельцем удобным вам способом. Например, если вы сделаете свой репозиторий публично доступным, то владелец может сделать пулл из вашего репозитория и слить изменения. Или вы можете отправить изменения по почте. В рамках GitHub всё несколько удобнее, со всякими пулл-реквестами в гуе и прочими фенечками, но чтобы всё работало, нужно соблюдать процедуру. Вы форкаете чужой репозиторий на свой аккаунт, клонируете себе на компьютер, создаёте ветку, делаете изменения, пушаете в локальный репозиторий, пушаете локальную ветку в свой репозиторий на гитхабе, через интерфейс гитхаба создаёте пулл-реквест, владелец видит ваш пулл-реквест, пуляет ваши изменения, а дальше это уже его забота. Важные моменты: Вы всегда работаете со своими репозиториями, владельцу вы только сообщаете, что у вас есть что-то полезное. Всегда создавайте отдельные ветки под каждый отдельный набор изменений. Пулл-реквесты работают через ветки. Если владелец попросит что-то исправить, то вы можете добавить изменения в ту же ветку в рамках одного пулл-реквеста. Если вы будете активно работать над проектом, и владелец доверит вам самостоятельно вносить изменения в свой репозиторий, то пулл-реквесты станут ненужными. Но если вы не знаете Git, то на это не рассчитывайте. Мелкие тривиальные изменения можно делать в рамках своего удалённого репозитория на гитхабе без создания локального репозитория. Гитхаб позволяет "отредактировать" файл даже в чужом репозитории, но при этом вы всё равно получите форк с веткой на своём аккаунте.

Комментариев нет:

Отправить комментарий