Вы должны раскошелиться на проект, да.Однако это не означает, что вам нужно снова клонировать весь материал локально .
Объяснение: простой способ просмотра репозитория git - это граф коммитов (он является направленным и ациклическимно это не имеет отношения к этой дискуссии);и все узлы этого графа, т.е. коммиты, имеют уникальный идентификатор во всех репозиториях git в мире .Что касается ветвей, они являются просто символическими ссылками на коммит (на языке git ветка - или тег - называется refspec ).
Кроме того, вы никогда никак не связаны с удаленным репозиторием.Единственная вещь, с которой вы действительно «связаны» - это граф коммитов.У удаленного репозитория просто есть набор refspecs (ветки, теги) ... указывающий на граф фиксации, который у них тоже есть - никому не нравятся висячие ссылки.Когда вы клонируете репозиторий, вы получаете граф фиксации (и связанные с ним деревья) и набор refspecs (т.е. ветви, теги).Refspec указывает на дерево.И это все.
Это означает следующее:
- у вас есть исходное репозиторий github: график коммитов и связанных деревьев, набор refspecs;
- вы клонировали его локально: тот же граф коммитов и связанных деревьев, тот же набор ссылок;
- вы зафиксировали вещи локально: вы добавили в этот граф и связанные деревья и добавили новый наборrefspecs.
ОК, теперь сделайте следующее:
- клонируйте оригинальное репо на github: тот же граф коммитов и деревьев, что и оригинал;здесь есть refspecs, которому предшествует только удаленное имя, которое по умолчанию равно
origin
.И что теперь? - в вашем локальном репозитории, добавьте ваш форк как удаленный ;
- push к этой вилке (это будет толкать refspecs и деревья);
- отправьте запрос на извлечение.
Добавление вашего форка в качестве удаленного так же просто, как:
git remote add myfork git@github.com:youruser/theproject
Вставьте в него свой refspec (ответвление):
git push myfork mybranch
А затем отправьте запрос на извлечение исходному автору.
Следует отметить, что теоретически вы можете добавить удаленный репозиторий git, который не имеет отношения к делу.вообще с «оригинальным» репо: это просто, что два графика фиксации будут полностью не связаны друг с другом - однако, случаи использования для этого редки