Как отправить запрос на перенос из клонированного репо?

82

Как отправить запрос на перенос из существующего локально клонированного репо?

Часто мне хочется посмотреть исходный код некоторых библиотек с github, поэтому я его клонирую. Позже я обнаруживаю некоторую проблему с кодом и поднимаю ее в списке рассылки, часто мимоходом. Автор библиотеки говорит: «Хорошая находка, вы можете отправить запрос на перенос?».

И ответ - «не так-то просто». Я еще не форк репо, я его клонировал. И похоже, я не могу найти способ отправить запрос на перенос из клонированного репо?

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

Кажется, об этой проблеме не так много говорят - я единственный, кого эта проблема затрагивает?

Бен Хатчисон
источник
4
С тех пор как заметил этот очень похожий вопрос: stackoverflow.com/questions/4209208/…
Бен Хатчисон,

Ответы:

55

Разветвите репо на GitHub, затем добавьте репозиторий вилки в качестве удаленного к вашей локальной клонированной копии:

git remote add myfork https://github.com/<myGitHubAccountName>/<repoName>.git

Затем вы можете нажать на вилку:

git push myfork master

Если вы делаете больше, чем просто этот запрос на перенос, вы можете удалить originпульт и назвать свою вилку origin:

git remote rm origin
git remote add origin https://github.com/<myGitHubAccountName>/<repoName>.git

Я обычно так и делаю. Иногда я добавляю исходное происхождение, upstreamчтобы у меня все еще была ссылка на него.

бобкорова
источник
5
Как это сделать без разветвления?
Аарон Холл
3
Если у вас есть push-доступ к репо, вы можете открыть пул-реквест между ветвями этого репо. Вам нужно будет подтолкнуть локальную ветку к новому имени ветки origin- что-то вроде git push origin HEAD:my-feature. Затем вы можете использовать веб-интерфейс, чтобы открыть запрос на перенос от my-featureдо master.
bobthecow
11
@Torek - Очередной провальный рабочий процесс. Является ли это на самом деле это трудно выполнить простое действие? Я думал, что это одна из основных целей git - упростить совместную работу и совместное использование патчей в децентрализованной модели. Не требуется ученого-ракетолога, чтобы сделать вывод, что цель должна быть простой и легко достижимой, поскольку это фундаментальный рабочий процесс. Этим парням нужно нанять UX-эксперта, поскольку всем им не хватает здравого смысла, чтобы разобраться в этом самостоятельно.
jww
10

Если вы согласны с установкой другого двоичного файла на свой путь, github выпустил небольшой симпатичный инструмент под названием hub.

Если вы клонировали чужое репо:

$ hub fork  # This creates a fork and adds your repo as a remote

$ git push YOUR_USER feature  # push the changes to your new remote

$ hub pull-request  # will open your browser
Rdrey
источник
Спасибо, что поделились информацией о Hub, и мне это нравится :) Я был именно в такой ситуации, и благодаря хабу это было так удобно для меня.
Вахиб Уль Хак
Важно отметить, что «хаб-форк» по-прежнему создает разветвленное репо в вашей учетной записи на GitHub.
Грейнджер
-1

Я всегда клонирую вместо fork, и следующие шаги работают для меня:

  1. Создайте новую ветку в клонированном репо и внесите новое изменение.
  2. Отправьте изменение в свою ветку следующим образом:

    git push origin insert_your_working_branch_name

  3. Теперь вы сможете найти свою рабочую ветку в запросе на перенос от мастера github.

омян
источник
3
Я не понимаю, как может работать шаг 2 выше, если вы клонировали чье-то репо, на которое у вас нет прав push?
Бен Хатчисон