Время от времени я сталкиваюсь с этой проблемой.
Допустим, я сделал следующее, чтобы прочитать исходный код рельсов, потому что у меня возникли некоторые проблемы.
git clone git://github.com/rails/rails.git
Во время исследования я кое-что протестировал, и теперь у меня есть исправление, на которое я бы хотел, чтобы основная команда rails взглянула на него. Как отправить изменения в разветвленную версию rails.
Помните, когда я клонировал, я клонировал не разветвленную версию, а версию только для чтения.
Это не значит, что я против разветвления. Просто иногда я думаю, что просто собираюсь просмотреть, а потом хочу что-то добавить.
git
github
git-push
git-remote
Ник Вандербильт
источник
источник
Ответы:
Когда вы клонируете репо, он автоматически устанавливает удаленный вызов,
origin
который ссылается на репо, которое вы клонировали. Теперь это указывает на вышестоящий проект Rails, но вам нужно создать свой собственный форк, на который вы можете нажимать, а затем настроить пульт, который указывает на него, чтобы вы могли нажимать на него.Первый шаг - нажать кнопку «Форк» на странице вышестоящего проекта GitHub (рисунок из инструкций GitHub по разветвлению ):
Как только вы это сделаете, найдите и скопируйте URL-адрес этого репо. Убедитесь, что вы используете URL-адрес SSH, у которого есть доступ для чтения и записи. Это должно быть что-то вроде
git@github.com:nadal/rails.git
, если ваше имя пользователяnadal
.Теперь вы можете создать пульт, который позволяет Git отслеживать удаленный репозиторий, извлекая из него или отправляя в него, в зависимости от вашего доступа. Вы можете либо заменить
origin
на тот, на который вы будете нажимать (сколько людей настроили его), либо оставитьorigin
указание на восходящий поток и вместо этого создать новый пульт. Я покажу, как сделать первую настройку; со вторым должно быть легко понять.Чтобы
origin
указать на свою вилку на GitHub, вы, вероятно, захотите оставить где-нибудь ветку восходящего потока, поэтому переименуйте ее вupstream
:Теперь создайте новый пульт, указывающий на вашу вилку:
И теперь вы сможете нажать на новую вилку:
Если вы довольны изменениями, внесенными в GitHub, и хотите, чтобы кто-то из команды Rails их рассмотрел, у вас есть два варианта. Один из них - отправить запрос на перенос с помощью GitHub; см. там документацию, как это сделать. Однако, если у вас есть только один или несколько небольших патчей, команда Rails предпочтет, чтобы вы создали билет Lighthouse и прикрепили свой патч; см. инструкции по участию в Rails для получения дополнительной информации.
edit Вот диаграмма, показывающая, что происходит. Вы просто клонировали вышестоящий репозиторий rails; так что теперь у вас есть свой собственный репозиторий на вашей собственной машине, которая относится к ,
git://github.com/rails/rails.git
какorigin
:Вот что вы получите, если разветвите, а затем клонируете вилку:
Если вы последуете моим инструкциям, вот что вы получите:
Это похоже на версию, которую вы получаете путем разветвления, за исключением того, что у нее также есть
upstream
пульт, поэтому вы можете отслеживать официальные изменения и объединять их в свой код (если вы создали разветвленную версию, вы, вероятно, захотите добавитьupstream
пульт как хорошо).источник
Очень простой способ переключиться из клонированного в разветвленный режим - использовать
hub
оболочку из http://hub.github.com/ .Когда это будет установлено, просто запустите
из вашего клона только для чтения.
источник
Это не должно иметь значения. Вы можете добавить еще один пульт, указав свое не разветвленное репо, если хотите. Подтолкните свои изменения к этому.
источник
Или, если вы не хотите форкнуть и в зависимости от команды обслуживания, вы можете создать и отправить им патч. Как правило, вы можете сделать свое репо доступным либо путем разветвления на github, как описано в других комментариях, либо на своем собственном репозитории git и предоставить разработчикам исходного репо информацию для вашего репо и ветки, которую вы хотите, чтобы они слились.
источник