GitHub не позволяет разветвить форк, если у вас есть форк? - PullRequest
1 голос
/ 01 ноября 2019

Есть 3 репо:

  1. Есть репозиторий OpenAI Baselines: https://github.com/openai/baselines.
  2. У меня есть вилка: https://github.com/sytelus/baselines.
  3. У другого пользователя есть егоfork: https://github.com/hill-a/stable-baselines.

Теперь я хочу раскошелиться # 3, то есть https://github.com/hill-a/stable-baselines. Однако GitHub не позволяет этого, говоря: «Вы уже разветвляли стабильные базовые линии». У меня на самом деле нет форка стабильных базовых линий, а есть только его родитель. Так что сообщение неверно. В любом случае, это не имеет смысла для меня вообще. № 3 в настоящее время значительно разошлись и имеют много разных функций. Я хочу отправить запрос на получение ответа обоим. Однако, не имея обеих вилок, я не могу этого сделать.

Есть решение?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

, на самом деле, невозможно разветвляться .

Если репозиторий # 3 разошелся, для владельца # 3 было бы разумно создать отдельное (non-fork) репозиторий с его содержимым, которое вы затем разветвите, чтобы включить PR.

0 голосов
/ 14 ноября 2019

Хотя @VonC предоставил тот факт, что невозможно получить два разных форка, я хочу добавить к этому ответу две вещи:

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

Во-вторых, я хочу предоставить способ, чтобы вы могли все же делать это, но с дополнительной работой отваша частьДопустим, у некоторых пользователей есть репо R и две их вилки R1 и R2. Вы хотите иметь возможность работать с R, R1 и R2 и отправлять им свои запросы на извлечение. Вот как вы можете сделать это:

  1. Клонируйте R локально, а затем создайте из него новое репозиторий Github. Это будет означать, что ваше хранилище не будет отображаться как форк, и вы не сможете отправлять PR с него на R.
  2. Добавьте пульты для каждого форка, используя git remote add r1_fork https://github.com/<user1>/R1.git.
  3. Для каждого форка создайте егособственную ветку, используя git checkout -b r1_fork.
  4. В каждой ветке извлеките изменения из этой ветки: git fetch r1_fork.
  5. После выборки выполните hard reset в этой ветке для этого удаленного устройства: git reset --hard r1_fork/master.

Теперь вы можете работать в ветке для каждого отдельного пульта и вносить изменения. Тем не менее, вы пока не можете отправлять PR. Для отправки PR вам нужно будет форкать репо, затем объединить изменения из вашей ветки с веткой, отправить PR и удалить форк. Очевидно, что это очень неидеально, но это то, что мы получили, пока GitHub не исправит свои вещи.

...