Как преобразовать git-клон, предназначенный только для чтения, из github в разветвленный - PullRequest
80 голосов
/ 18 ноября 2010

Время от времени я сталкиваюсь с этой проблемой.

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

git clone git://github.com/rails/rails.git

Во времяИсследования Я проверил кое-что, и теперь у меня есть исправление, на которое я хотел бы обратить внимание основной команде rails.Как перенести мои изменения в разветвленную версию rails.

Помните, что когда я клонировал, я не клонировал раздвоенную версию, а версию только для чтения.

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

Ответы [ 4 ]

112 голосов
/ 18 ноября 2010

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

Первыйшаг - нажать кнопку «Fork» на странице проекта GitHub, расположенной выше по течению (картинка из инструкции GitHub по разветвлению ):

GitHub fork button

Как только вы это сделаличто найти и скопировать URL для этого репо.Убедитесь, что вы используете SSH URL, который имеет права на чтение и запись.Это должно быть что-то вроде git@github.com:nadal/rails.git, при условии, что ваше имя пользователя nadal.

Теперь вы можете создать удаленный сервер, который позволит Git отслеживать удаленный репозиторий, извлекать из него или подталкивать в зависимости от него.на доступе у вас есть.Вы можете либо заменить origin на тот, на который вы нажмете (сколько людей настроили его), либо оставить origin, указывающий на восходящий поток, и вместо этого создать новый пульт.Я покажу, как сделать первую настройку;второе должно быть легко выяснено.

Чтобы изменить origin так, чтобы он указывал на ваш форк на GitHub, вы, вероятно, захотите где-то оставить ветку восходящего потока, поэтому переименуйте его в upstream:

git remote rename origin upstream

Теперь создайте новый пульт, указывающий на вашу вилку:

git remote add -f origin git@github.com:nadal/rails.git

И теперь вы сможете нажать на свою новую вилку:

git push origin master

Как только выдовольны изменениями, внесенными вами в GitHub, и хотели бы, чтобы кто-то из команды Rails посмотрел на них, у вас есть два варианта.Один из них - отправить запрос на получение с помощью GitHub;см. документы там, чтобы узнать, как это сделать.Однако если у вас есть только один или несколько небольших патчей, команда Rails предпочла бы, чтобы вы создали билет Lighthouse и прикрепили свой патч;см. инструкции по , вносящим вклад в Rails для получения дополнительной информации.

edit Вот диаграмма, чтобы указать, что происходит.То, что вы сделали, это просто клонировали репо с рельсами вверх по течению;так что теперь у вас есть собственный репо на вашем компьютере, который называется git://github.com/rails/rails.git как origin:

Github:    git://github.com/rails/rails.git
                    ^
                    |
Remotes:          origin
                    |
Your machine:     rails/

Вот что вы получите, если разветвитесь, а затем клонируете свою вилку:

Github:    git://github.com/rails/rails.git <-- git@github.com:nadal/rails.git
                                                           ^
                                                           |
Remotes:                                                origin
                                                           |
Your machine:                                           rails/

Если вы будете следовать моим инструкциям, вот что вы получите:

Github:    git://github.com/rails/rails.git <-- git@github.com:nadal/rails.git
                        ^                                  ^
                        |                                  |
Remotes:            upstream                            origin
                        |                                  |
Your machine:           \-------------------------------rails/

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

3 голосов
/ 06 декабря 2013

Очень простой способ переключения из клонированного в раздвоенный режим - использование оболочки hub из http://hub.github.com/.

Когда это установлено, просто запустите

hub fork

из вашего клона только для чтения.

1 голос
/ 18 ноября 2010

Это не должно иметь значения. При желании вы можете добавить еще один удаленный репозиторий, указав свой неподтвержденный репо. Нажмите ваши изменения к этому.

0 голосов
/ 18 ноября 2010

Или, если вы не хотите разветвляться, и, в зависимости от команды поддержки, вы можете создать и отправить для них патч. В целом, хотя вы сделаете свое репо доступным, либо разветвившись на github, как описано в других комментариях, либо на собственное git репо и предоставьте сопровождающим исходного репо информацию для вашего репо и филиала, в которую вы хотите, чтобы они слились. 1001 *

...