В чем разница между форкингом и клонированием на GitHub?

Я хотел бы знать разницу между выполнением Fork проекта и выполнением clone этого

Могу ли я отправлять пул-запросы только через GitHub, если я разбудил проект?

8 ответов

Решение

В основном да. forkпросто запрос GitHub клонировать проект и зарегистрировать его под своим именем пользователя; GitHub также отслеживает отношения между двумя репозиториями, так что вы можете визуализировать коммиты и зацепки между двумя проектами (и другими форками).

Вы все еще можете запросить, чтобы люди извлекали из вашего клонированного хранилища, даже если вы не используете fork - но вам придется иметь дело с тем, чтобы сделать его общедоступным самостоятельно. Или отправьте разработчикам патчи (см. git format-patch) что они могут относиться к своим деревьям.

Когда вы говорите, что создаете хранилище, вы в основном создаете копию хранилища под своим идентификатором GitHub. Главное, на что следует обратить внимание, это то, что любые изменения, внесенные в исходный репозиторий, будут отражены обратно в ваши разветвленные репозитории (вам нужно получить и перебазировать). Однако, если вы внесете какие-либо изменения в свой разветвленный репозиторий, вам придется явно создать запрос на извлечение в исходном репозитории. Если ваш запрос на получение одобрения одобрен администратором исходного репозитория, то ваши изменения будут зафиксированы / объединены с существующей исходной базой кода. До тех пор ваши изменения будут отражены только в той копии, которую вы подписали.

Короче:

Модель Fork & Pull позволяет любому разветвить существующий репозиторий и вносить изменения в свой персональный форк, не требуя предоставления доступа к исходному репозиторию. Затем изменения должны быть перенесены в исходный репозиторий сопровождающим проекта.

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

Пара других интересных рассуждений -

Git вилки на самом деле Git клоны?

Как мне обновить разветвленный репозиторий GitHub?

  • Разложенный проект находится в вашем онлайн-хранилище (репо).
  • Клонированный проект находится на вашей локальной машине (я обычно клонирую после разветвления репо).

Вы можете зафиксировать свое онлайн-репо (или зафиксировать в своем локальном репо, а затем отправить в онлайн-репо), а затем отправить запрос на извлечение.

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

Клон - это то, где у вас есть правильное дублирование и разделение между двумя (возможно, разными) версиями хранилища. Когда в один репозиторий вносятся изменения, новый контент должен активно копироваться в другой репозиторий с помощью команды push. И внесены изменения в другой репо.

При развёртывании репо на сервере нет необходимости дублировать контент, потому что оба репо будут использовать один и тот же контент [фиксированный объект] с того же сервера. "Хитрость" заключается в управлении различными пользовательскими точками зрения, так что каждый пользователь считает, что у него есть полная личная копия репо. Толкает и выбирает между вилками просто обновляет указатели пользователя.

На более низком уровне git делает то же самое внутри. Если у вас есть три разных файла, каждый из которых содержит Hello Worldзатем git просто "разветвляет" свою единственную копию блоба Hello World и предлагает ее в каждом из трех мест по мере необходимости.

Возможность раскошелиться на сервер означает, что большой объем хранилища Github не так уж велик в среднем, поскольку каждый орган разделяет одно базовое репо.

Хотя @AniketThakur ответ очень хороший. Никто еще не ответил на следующий вопрос.

Могу ли я отправлять пул-запросы только через GitHub, если я разбудил проект?

Нет. Если вы являетесь участником репозитория, вы можете: Сделать локальный клон. Сделать местный филиал. Добавить коммиты в эту ветку. Переместите локальную ветвь обратно в github (создавая удаленную ветку в процессе). Сделайте пулл-запрос, запрашивающий объединение этой ветви с основной веткой (или любой другой веткой, которая вам нравится).

Короче говоря, Forking, возможно, то же самое, что и "клонирование под вашим идентификатором / профилем GitHub". Вилка всегда лучше, чем клон, за некоторыми исключениями, очевидно. Разветвленный репозиторий всегда отслеживается / сравнивается с исходным репозиторием в отличие от клонированного репозитория. Это позволяет вам отслеживать изменения, инициировать запросы извлечения, а также вручную синхронизировать изменения, сделанные в исходном репозитории, с вашим разветвленным.

Еще одно странное отличие GitHub в том, что изменения в форках не учитываются в вашем журнале активности, пока ваши изменения не будут перенесены в исходное хранилище. Более того, чтобы превратить вилку в правильного клона, вы, очевидно, должны обратиться в службу поддержки Github.

Почему мои вклады не отображаются:

Коммит был сделан в развилке

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

Откройте запрос на включение, чтобы ваши изменения были объединены с родительским репозиторием. Чтобы отсоединить вилку и превратить ее в автономный репозиторий на GitHub, обратитесь в службу поддержки GitHub. Если вилка имеет свои собственные вилки, сообщите в службу поддержки, должны ли вилки перемещаться вместе с вашим репозиторием в новую сеть или оставаться в текущей сети. Для получения дополнительной информации см." О вилках".

Если вы сделали то, на что намекал респондент (забыли раскошелиться и просто локально клонировали репо, внесли изменения и теперь нужно выполнить запрос на извлечение), вы можете вернуться на правильный путь:

  1. форк репо, на которое вы хотите отправить пулл-запрос
  2. нажмите ваши локальные изменения на вашем пульте
  3. запрос на выдачу

Короче говоря, "fork" создает копию проекта, размещенную на вашей учетной записи GitHub.

"Клон" использует программное обеспечение git на вашем компьютере для загрузки исходного кода и всей истории версий на этот компьютер

Другие вопросы по тегам