разница между вилкой и веткой на github - PullRequest
119 голосов
/ 16 февраля 2011

Если я раскошелюсь на проект, размещенный на github. Разветвляю ли я все ветви? Как узнать, на какой ветке основан мой форк? Другими словами, какая ветка будет загружена на мой компьютер?

Ответы [ 7 ]

134 голосов
/ 15 ноября 2012

Думайте об этом так:

Репозиторий [sitory] соответствует совместной работе команды в одном или нескольких филиалах.Все участники имеют свою собственную копию.

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

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

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

A commit - этомножество изменений в коде.Это одна из самых интересных вещей в Git.Вы не передаете файлы, вы передаете журналы изменений.

42 голосов
/ 16 февраля 2011

Все ветки на GitHub будут скопированы в форк.(Очевидно, что это не относится к ветвям, которые никогда не передавались в GitHub.)

Но разветвление - это операция GitHub-to-GitHub;на ваш компьютер ничего не копируется.Это не совсем то же самое, что Git clone .Если вы хотите спросить «что копируется, когда я клонирую проект?», См. Руководство для git-clone(1).

9 голосов
/ 16 февраля 2011

Fork - это клон на стороне GitHub (он клонирует все).
Когда вы клонируете репо, вы получаете всю историю этого репо со всеми его ветвями.

Даже еслитеоретически вы можете изменить ветку по умолчанию для удаленного репо , клон из репозитория GitHub в основном ищет основную ветку.То есть, чтобы изменить ветку «по умолчанию», которую получит клон GitHub, вам нужно переименовать основную ветку.

3 голосов
/ 28 февраля 2016

Если вы разветвляете проект, вы делаете копию всего проекта в свою учетную запись git hub. Вы ничего не копируете на свой ПК

Чтобы сделать копию на вашем ПК, вам нужно ее клонировать и вытащить все вещи, и вы получите все ветки и код этого проекта

2 голосов
/ 16 февраля 2011

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

Если вы клонируете разветвленную разветвленную ветвь на локальный ПК, вы получите1003 * на вашем ПК указывает на главную ветку вашего форка на Github.

1 голос
/ 31 января 2018

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

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

0 голосов
/ 15 марта 2019

Я хотел бы поделиться реальным примером , когда мы используем Ветви и когда мы используем Forks

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

Скажем, наш проект расположен в

https://github.com/yardpenalty/mainproject.git

Использование ветки:

Допустим, ветвь называется It_doesnt_matter

Как только мы получим нашу ветку так, как мы хотим для производства, мы сделаем наш последний толчок кэта ветка и создают запрос на слияние , который затем отправляется в UAT для тестирования. Как только тест пройден через QC, изменения объединяются в производство.

объединение изIt_doesnt_matter ветвь теперь передается в мастер-проект

в https://github.com/yardpenalty/mainproject.git

Допустим, пакетный проект расположен в

https://github.com/yardpenalty/mypackage.git

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

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

Использование вилки: Теперь, когда нам нужно немного поработать с нашим пакетом, мы создаем клон производственного пакета с помощью вилки.Файлы composer.json могут быть обновлены, чтобы указывать на разветвление, которое теперь находится в Путь пользователя или группы

Таким образом, мы создадим разветвление в https://github.com/yardpenalty/mypackage.git

и назовите его https://github.com/yardpenalty/yards/mypackage.git

Теперь мы можем обновить наш файл composer.json , чтобы он указывал на этот пакет в наших «репозиториях»: [массив такой такой, и мы поехали!

 {
            "type": "github",
            "url": "https://github.com/yardpenalty/yard/mypackage.git"
 }

]

...