Страницы

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

пятница, 19 октября 2018 г.

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

Не могу внести изменения в репозиторий гитa. Сам репозиторий успешно клонирован. Но после внесения комита и команды git push появляется следующие remote:
Permission to %Полное имя репозитория% denied to %Мой логин на GitHub%.
SSH ключ был успешно создан и также успешно подключен к моему аккаунта GitHub. Такая ошибка возникает как при консольном "пуше", так и при синхронизации в десктопном приложении GiHub. При это владелец репозитория спокойно вносит различные правки.
Как решается беда?
Если дело в отсутствии прав доступа, то как их выдать (со стороны владельца репозитория)


Ответ

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

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

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