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



Я хотел бы знать различия между выполнением вилки проекта и выполнением clone его.



могу ли я отправлять запросы на вытягивание только через GitHub, если я разветвил проект?

632   8  

8 ответов:

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

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

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

короче:

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

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

пара других интересных dicussions -

являются ли git вилки на самом деле git клоны?

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

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

вы можете совершить на своем онлайн-РЕПО (или совершить на своем локальном РЕПО, а затем нажать на свое онлайн-РЕПО), а затем отправить запрос на вытягивание.

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

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

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

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

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

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

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

  1. вилка РЕПО вы хотите отправить запрос на вытягивание
  2. нажмите ваши локальные изменения на ваш пульт
  3. выдать запрос на вытягивание

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

с почему мои вклады не появляются:

фиксация была сделана в вилке

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

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

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

могу ли я отправлять запросы на вытягивание только через GitHub, если я разветвил проект?

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

Comments

    Ничего не найдено.