Как конвертировать readonly git клон из github в раздвоенный

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

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

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

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

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

Не то, чтобы я против разветвления. Это просто, что иногда я думаю, что просто собираюсь просматривать, а затем хочу что-то добавить.

Ответ 1

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

Первый шаг - щелкнуть кнопку "Вилка" на странице проекта вверх по GitHub (изображение из инструкции GitHub на forking):

GitHub fork button

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

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

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

git remote rename origin upstream

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

git remote add -f origin [email protected]:nadal/rails.git

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

git push origin master

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

изменить. Здесь приведена диаграмма, показывающая, что происходит. То, что вы сделали, просто клонирует репозиторию upstream rails; поэтому теперь у вас есть собственное репо на вашей собственной машине, которая относится к 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 <-- [email protected]:nadal/rails.git
                                                           ^
                                                           |
Remotes:                                                origin
                                                           |
Your machine:                                           rails/

Если вы выполните мои инструкции, вот что вы получите:

Github:    git://github.com/rails/rails.git <-- [email protected]:nadal/rails.git
                        ^                                  ^
                        |                                  |
Remotes:            upstream                            origin
                        |                                  |
Your machine:           \-------------------------------rails/

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

Ответ 2

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

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

hub fork

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

Ответ 3

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

Ответ 4

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