#git #github
#git #github
Вопрос:
Я разветвил репозиторий, внес некоторые изменения, зафиксировал их и отправил запрос на извлечение. PR был принят, и изменения были объединены в вышестоящий репозиторий. Однако позже я понял, что допустил ошибку, выпустив PR из главной ветви моего форка, вместо того, чтобы создать отдельную ветвь для внесения всех изменений и отправки PR оттуда.
Мне было интересно, есть ли какой-либо способ изменить базовую ветвь закрытого / объединенного PR?
Предполагая, что это невозможно, было бы разумно удалить форк? Тем не менее, я очень обеспокоен тем, что это приведет к удалению всего ценного обсуждения, а также комментариев к существующему PR.
Я буду благодарен за любую помощь, которую вы можете предоставить.
Редактировать 1: я пометил ответ @bk2204 как принятый ответ, поскольку автор далее рассмотрел возможные последствия удаления вилки. Хотя ответ @msanford также был очень полезен, и я хотел бы отметить оба ответа. Приветствия!
Ответ №1:
Прежде всего, похоже, что вы говорите о желании изменить ветвь, связанную с запросом на извлечение, вместо базовой ветви (ветви, в которую она будет объединена). В любом случае, невозможно изменить ветвь объединенного запроса на извлечение; запрос на извлечение считается завершенным, и его изменение невозможно.
В этом случае нет необходимости удалять ваш форк из-за использования неправильной ветви. Теперь, когда запрос на извлечение закрыт, вы можете изменить свою master
ветку по своему усмотрению; история архивируется в главном репозитории и на стороне GitHub, и дальнейшие изменения в вашей master
ветке не повлияют на запрос на извлечение.
Однако, если вы хотите удалить свою master
ветку или свой форк по другим причинам, вы можете сделать это без негативных последствий для восходящего проекта или запроса на извлечение.
Комментарии:
1. Спасибо за ваше быстрое и очень подробное объяснение. На основе прошлых потоков , похоже, нет конкретного ответа относительно того, сохранит ли удаление fork после объединенного PR обсуждение, а также комментарии к строке от рецензентов. Не могли бы вы уточнить, что вы имели в виду, говоря «без негативных последствий для восходящего проекта» или «запрос на извлечение», пожалуйста?
2. Я имел в виду, что запрос на извлечение останется неизменным после объединения со всеми обсуждениями и комментариями рецензентов. Единственным недостатком удаления вашего форка (не вашей ветки) является то, что в запросе на извлечение будет указано, что он пришел из «неизвестного репозитория». Если это вас беспокоит, вы можете оставить форк и заархивировать его вместо этого или просто оставить его неактивным.
Ответ №2:
Хорошо, что вы заметили и хотите что-то с этим сделать.
Однако PR был рассмотрен и объединен кем-то, ответственным за вышестоящий проект. Это означает, что они приняли ваши изменения, так что вам не нужно беспокоиться об этом и вам ничего не нужно делать.
Чтобы глубже разобраться в том, что вас беспокоит, ветви — это просто полезная абстракция для объединения серий коммитов. Тот факт, что вы отправили PR из своего собственного, master
вместо ветви исправления, от которой вы ответвлялись master
, не имеет значения. Предполагая, что вы намеревались использовать свою ветку исправлений master
, ветка исправлений и ваш мастер в конечном итоге являются одним и тем же, поскольку они содержат идентичную историю.
Если бы ваш патч отправлялся в функциональную ветвь в вышестоящем репозитории, которая не содержала работы из master
(по какой-либо причине), дополнительные изменения также были бы обнаружены в вашем PR, и вы, и рецензент вышестоящего репозитория заметили бы это.
Для полноты картины: если вам действительно нужно исправить работу, которая была включена по ошибке, вероятно, потребуется серия повторных коммитов в новом запросе на извлечение.
Комментарии:
1. Спасибо за ваше быстрое и очень подробное объяснение. Да, оглядываясь назад, я бы основал свою ветку исправлений на
master
. Изначально я беспокоился о отправке PR изmaster
ветки моего форка, потому что, из того, что я узнал, любые дальнейшие коммиты в ветке, на которой основан PR, будут автоматически добавлены к PR (что было бы проблематично, поскольку я намерен продолжать вносить свой вклад в проект).). Однако это, по-видимому, относится только к PR, которые еще предстоит принять и объединить.2. Пожалуйста, поправьте меня, если я ошибаюсь, поскольку мой PR был объединен, и я хочу продолжить работу над новыми функциями, сначала я должен синхронизировать свой fork (поскольку нет необходимости удалять его) через:
git remote add upstream https://github.com/UPSTREAM-USER/ORIGINAL-PROJECT.git; git fetch upstream; git checkout master; git merge upstream/master
thengit checkout -b myothernewfeature
.3. @ottowichterle В основном правильный, но может быть короче. Да, добавьте удаленный доступ к восходящему потоку, затем просто
git pull -r upstream master
(обновите свою локальную копию с главного источника) иgit push
(обновите мастер до вашего форка). Выполнено.