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
Это где вилка вступает в игру. Разветкив чье-то репо, вы получаете копию, к которой у вас есть право на запись, то есть к которой вы можете добавить свои вклады. Весь рабочий процесс выглядит примерно так:
- Определите область в репо Боба, которая может быть улучшена.
- Вилка этого репо.
- Сделайте клон своей вилки на вашей локальной машине.
- В этом клоне вносите изменения, запускайте тесты, создавайте коммиты (возможно, в новой ветке) и т.д.
- По желанию, как только вы будете довольны своими изменениями в коде Боба, сделайте свою работу более презентабельной: приведите в порядок/сдавите свои коммиты, напишите хорошие сообщения о коммитах, которые соответствуют стилю репо Боба. Вы также можете захотеть переназначить свою ветку на ветку Боба, если Боб выдвинул изменения в своем репо, поскольку вы разветкили его репо.
- Нажимай на свою вилку.
- Отправьте запрос на извлечение Бобу и подождите, пока он его рассмотрит.
- Нажимайте больше коммитов - и, возможно, перебазируйте - на вашу ветку, пока Боб не будет удовлетворен вашей работой
- Боб объединяет ваш запрос на извлечение; ваша работа интегрируется в его репозиторий GitHub. Шампанское! Ваша работа была не напрасной.
- Чтобы сэкономить место на серверах GitHub, и если вы не планируете вносить вклад в репо Bob в ближайшее время, вы можете безопасно удалить свой форк.
Ответ 3
Forking дает понять, что ваш репозиторий происходит от другого, отмечая ваш репозиторий как "разветвленный от..." и, что более важно, он перечислит ваш репозиторий в списке fork исходного проекта.
Одним из преимуществ этого является то, что в случае, когда исходный проект будет прекращен, пока вы все еще работаете над ним, люди все еще могут найти ваш репозиторий, глядя на список вилок из основного репозитория.
С точки зрения github, они могут сэкономить некоторое дисковое пространство, зная, что объекты git между вашим и исходным репозиторием одинаковы и могут использоваться совместно
Кроме того, я думаю, вы не можете сделать запрос на перенос из репозитория, который не является вилкой исходного. По крайней мере, я не смог этого сделать, мне пришлось размахивать, подталкивать к развилке, просить запрос на тяну.