В чем разница между форкингом и клонированием на GitHub?
Я хотел бы знать разницу между выполнением Fork проекта и выполнением clone
этого
Могу ли я отправлять пул-запросы только через GitHub, если я разбудил проект?
8 ответов
В основном да. fork
просто запрос GitHub клонировать проект и зарегистрировать его под своим именем пользователя; GitHub также отслеживает отношения между двумя репозиториями, так что вы можете визуализировать коммиты и зацепки между двумя проектами (и другими форками).
Вы все еще можете запросить, чтобы люди извлекали из вашего клонированного хранилища, даже если вы не используете fork
- но вам придется иметь дело с тем, чтобы сделать его общедоступным самостоятельно. Или отправьте разработчикам патчи (см. git format-patch
) что они могут относиться к своим деревьям.
Когда вы говорите, что создаете хранилище, вы в основном создаете копию хранилища под своим идентификатором GitHub. Главное, на что следует обратить внимание, это то, что любые изменения, внесенные в исходный репозиторий, будут отражены обратно в ваши разветвленные репозитории (вам нужно получить и перебазировать). Однако, если вы внесете какие-либо изменения в свой разветвленный репозиторий, вам придется явно создать запрос на извлечение в исходном репозитории. Если ваш запрос на получение одобрения одобрен администратором исходного репозитория, то ваши изменения будут зафиксированы / объединены с существующей исходной базой кода. До тех пор ваши изменения будут отражены только в той копии, которую вы подписали.
Короче:
Модель Fork & Pull позволяет любому разветвить существующий репозиторий и вносить изменения в свой персональный форк, не требуя предоставления доступа к исходному репозиторию. Затем изменения должны быть перенесены в исходный репозиторий сопровождающим проекта.
Обратите внимание, что после разветвления вы можете клонировать свой репозиторий (тот, что под вашим именем) локально на вашем компьютере. Внесите в него изменения и отправьте его в свой разветвленный репозиторий. Однако, чтобы отразить ваши изменения в исходном репозитории, ваш запрос на извлечение должен быть утвержден.
Пара других интересных рассуждений -
- Разложенный проект находится в вашем онлайн-хранилище (репо).
- Клонированный проект находится на вашей локальной машине (я обычно клонирую после разветвления репо).
Вы можете зафиксировать свое онлайн-репо (или зафиксировать в своем локальном репо, а затем отправить в онлайн-репо), а затем отправить запрос на извлечение.
Менеджер проекта может принять его, чтобы получить ваши изменения в своей основной онлайн-версии.
Клон - это то, где у вас есть правильное дублирование и разделение между двумя (возможно, разными) версиями хранилища. Когда в один репозиторий вносятся изменения, новый контент должен активно копироваться в другой репозиторий с помощью команды push. И внесены изменения в другой репо.
При развёртывании репо на сервере нет необходимости дублировать контент, потому что оба репо будут использовать один и тот же контент [фиксированный объект] с того же сервера. "Хитрость" заключается в управлении различными пользовательскими точками зрения, так что каждый пользователь считает, что у него есть полная личная копия репо. Толкает и выбирает между вилками просто обновляет указатели пользователя.
На более низком уровне git делает то же самое внутри. Если у вас есть три разных файла, каждый из которых содержит Hello World
затем git просто "разветвляет" свою единственную копию блоба Hello World и предлагает ее в каждом из трех мест по мере необходимости.
Возможность раскошелиться на сервер означает, что большой объем хранилища Github не так уж велик в среднем, поскольку каждый орган разделяет одно базовое репо.
Хотя @AniketThakur ответ очень хороший. Никто еще не ответил на следующий вопрос.
Могу ли я отправлять пул-запросы только через GitHub, если я разбудил проект?
Нет. Если вы являетесь участником репозитория, вы можете: Сделать локальный клон. Сделать местный филиал. Добавить коммиты в эту ветку. Переместите локальную ветвь обратно в github (создавая удаленную ветку в процессе). Сделайте пулл-запрос, запрашивающий объединение этой ветви с основной веткой (или любой другой веткой, которая вам нравится).
Короче говоря, Forking, возможно, то же самое, что и "клонирование под вашим идентификатором / профилем GitHub". Вилка всегда лучше, чем клон, за некоторыми исключениями, очевидно. Разветвленный репозиторий всегда отслеживается / сравнивается с исходным репозиторием в отличие от клонированного репозитория. Это позволяет вам отслеживать изменения, инициировать запросы извлечения, а также вручную синхронизировать изменения, сделанные в исходном репозитории, с вашим разветвленным.
Еще одно странное отличие GitHub в том, что изменения в форках не учитываются в вашем журнале активности, пока ваши изменения не будут перенесены в исходное хранилище. Более того, чтобы превратить вилку в правильного клона, вы, очевидно, должны обратиться в службу поддержки Github.
Почему мои вклады не отображаются:
Коммит был сделан в развилке
Коммиты, сделанные в развилке, не будут учитываться как ваш вклад. Чтобы они учитывались, вы должны выполнить одно из следующих действий:
Откройте запрос на включение, чтобы ваши изменения были объединены с родительским репозиторием. Чтобы отсоединить вилку и превратить ее в автономный репозиторий на GitHub, обратитесь в службу поддержки GitHub. Если вилка имеет свои собственные вилки, сообщите в службу поддержки, должны ли вилки перемещаться вместе с вашим репозиторием в новую сеть или оставаться в текущей сети. Для получения дополнительной информации см." О вилках".
Если вы сделали то, на что намекал респондент (забыли раскошелиться и просто локально клонировали репо, внесли изменения и теперь нужно выполнить запрос на извлечение), вы можете вернуться на правильный путь:
- форк репо, на которое вы хотите отправить пулл-запрос
- нажмите ваши локальные изменения на вашем пульте
- запрос на выдачу
Короче говоря, "fork" создает копию проекта, размещенную на вашей учетной записи GitHub.
"Клон" использует программное обеспечение git на вашем компьютере для загрузки исходного кода и всей истории версий на этот компьютер