Ветвление и ветвление в GitHub



Я хотел бы узнать больше о преимуществах и недостатках разветвления проекта github против создания ветви проекта github.



разветвление делает мою версию проекта более изолированной от оригинала, потому что я не должен быть в списке сотрудников исходного проекта. Поскольку мы разрабатываем проект в доме, нет никаких проблем в добавлении людей в качестве соавторов. Но мы хотели бы понять, будет ли разветвление проекта вносить изменения слияния обратно основной проект сложнее. То есть, я задаюсь вопросом, облегчает ли ветвление синхронизацию двух проектов. Другими словами, проще объединить и подтолкнуть изменения между моей версии основного проекта и основного проекта, когда я ветке?

671   4  

4 ответов:

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

разветвление-это не более чем клон на стороне сервера GitHub:

  • без возможности сразу нажать назад
  • С очереди вилка добавлена функция управления запросом слияния

вы держите вилку в синхронизации с оригинальным проектом по:

  • добавление исходного проекта в качестве удаленного
  • регулярно извлекая из этого оригинального проекта
  • перебазируйте свое текущее развитие поверх ветви интереса, которую вы обновили из этой выборки.

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

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


тот факт, что вы клонируете на стороне GitHub, означает, что теперь у вас есть два "центральный" репозиторий ("Центральный "как" видимый от нескольких сотрудников).
Если вы можете добавить их непосредственно в качестве соавтора для один проект, вам не нужно управлять другой с вилкой.

fork on GitHub

опыт слияния будет примерно таким же, но с дополнительным уровнем косвенности (сначала нажмите на вилку, а затем попросите потянуть, с риском эволюции на исходном РЕПО, делая ваши быстрые слияния больше не быстрыми вперед).
Это означает, что правильный рабочий процесс для git pull --rebase upstream (перебазируйте свою работу поверх новых коммитов из upstream), а затем git push --force origin, чтобы переписать историю таким образом, ваши собственные коммиты всегда находятся на вершине коммиты из исходного (восходящего) РЕПО.

Читайте также:

вот высокоуровневые различия:

разветвление

плюсы

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

минусы

  • затрудняет просмотр всех ветвей, которые активны (или неактивны, если на то пошло)
  • сотрудничество на ветке сложнее (владелец вилки должен добавить человека в качестве соавтора)
  • вам нужно понять концепцию нескольких пультов дистанционного управления в Git
    • требуется дополнительная умственная бухгалтерия
    • это сделает рабочий процесс более сложным для людей, которые не очень комфортно с Git

ветвление

плюсы

  • сохраняет всю работу, выполняемую вокруг проекта в одном месте
  • все сотрудники могут нажать на ту же ветку, чтобы сотрудничать на нем
  • есть только один git remote, чтобы иметь дело с

минусы

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

Это связано с общим рабочим процессом Git. Вы вряд ли сможете напрямую перейти в репозиторий основного проекта. Я не уверен, что репозиторий проекта GitHub поддерживает управление доступом на основе ветвей, так как вы не хотите предоставлять кому-либо разрешение на нажатие на главную ветвь, например.

общая картина выглядит следующим образом:

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

без этого, это довольно необычно для общественных проектов, чтобы позволить кому впихнуть свои коммиты напрямую.

Forking создает совершенно новый репозиторий из существующего репозитория (просто делает клон git на gitHub / bitbucket)

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

стратегия ветвления создает новую ветвь поверх существующего / рабочего репозитория

ветки лучше всего использовать: когда они создаются как временные места для работы через функцию, с намерением объединить ветвь с источником.

Более Конкретную :- В проектах с открытым исходным кодом это владелец репозитория, который решает, кто может нажать на репозиторий. Однако идея open source заключается в том, что каждый может внести свой вклад в проект.

эта проблема решается форками: каждый раз, когда разработчик хочет что-то изменить в проекте с открытым исходным кодом, они не клонируют официальный репозиторий напрямую. Вместо этого они разветвляют его, чтобы создать копию. Когда работа завершена, они делают запрос на вытягивание, чтобы владелец репозитория мог просмотреть изменения и решить, следует ли объединить их в свой проект.

по своей сути разветвление похоже на ветвление функций, но вместо создания ветвей создается вилка репозитория, и вместо выполнения запроса слияния вы создаете запрос на вытягивание.

ниже ссылки обеспечивают разницу в хорошо объяснил образом :

https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/

https://buddy.works / blog / 5-types-of-git-workflows

http://www.continuousagile.com/unblock/branching.html

Comments

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