GitHub: Почему я должен вилка?

Я понимаю, что forking клонирует репозиторий на стороне сервера. Но я не понимаю, почему я это сделаю.

Почему бы не клонировать исходный репозиторий на моем компьютере, добавьте мой код, чем нажмите новую ветку на GitHub и сделайте запрос на перенос?

Ответ 1

Из документации Github

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

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

https://help.github.com/articles/fork-a-repo/

Ответ 2

Я понимаю, что разветвление клонирует хранилище на стороне сервера [...]

Это о праве. На GitHub вилка - это копия какого-либо другого репозитория GitHub со ссылкой на репо, из которого оно было скопировано.

enter image description here

Примечание: концепция вилки возникла из GitHub; это не концепция Git.

[...] но я не понимаю, почему я это сделал. Почему бы не клонировать исходный репозиторий на мою машину, добавить мой код, затем перенести новую ветку в GitHub и сделать запрос на извлечение?

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

remote: Permission to bos/text.git denied to Jubobs.
fatal: unable to access 'https://github.com/bos/text/': The requested URL returned error: 403

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

  1. Определите область в репо Боба, которая может быть улучшена.
  2. Вилка этого репо.
  3. Сделайте клон своей вилки на вашей локальной машине.
  4. В этом клоне вносите изменения, запускайте тесты, создавайте коммиты (возможно, в новой ветке) и т.д.
  5. По желанию, как только вы будете довольны своими изменениями в коде Боба, сделайте свою работу более презентабельной: приведите в порядок/сдавите свои коммиты, напишите хорошие сообщения о коммитах, которые соответствуют стилю репо Боба. Вы также можете захотеть переназначить свою ветку на ветку Боба, если Боб выдвинул изменения в своем репо, поскольку вы разветкили его репо.
  6. Нажимай на свою вилку.
  7. Отправьте запрос на извлечение Бобу и подождите, пока он его рассмотрит.
  8. Нажимайте больше коммитов - и, возможно, перебазируйте - на вашу ветку, пока Боб не будет удовлетворен вашей работой
  9. Боб объединяет ваш запрос на извлечение; ваша работа интегрируется в его репозиторий GitHub. Шампанское! Ваша работа была не напрасной.
  10. Чтобы сэкономить место на серверах GitHub, и если вы не планируете вносить вклад в репо Bob в ближайшее время, вы можете безопасно удалить свой форк.

Ответ 3

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

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

С точки зрения github, они могут сэкономить некоторое дисковое пространство, зная, что объекты git между вашим и исходным репозиторием одинаковы и могут использоваться совместно

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