#git #pull-request #git-fork
#git #запрос на извлечение #git-fork
Вопрос:
У меня есть форк репозитория, где я пишу свои части кода. Я допустил большую ошибку, написав фрагменты кода (обычно это ~ 50-100 строк sql-кода) в главную ветвь fork (хотя в то время я этого не осознавал), а затем вытащил запрашивающую главную ветвь fork в главную ветвь origin.
Настройки в исходном репозитории позволяют мне только сжимать и объединять коммиты. Итак, прямо сейчас я нахожусь в ситуации, когда каждый запрос на извлечение составляет 60 коммитов и 1 измененный файл (фактический, над которым я работал).
Есть ли способ каким-то образом синхронизировать состояния исходного репозитория и fork, чтобы удалить все ненужные коммиты из главной ветки?
Комментарии:
1. Вы ищете
rebase
Ответ №1:
Быстрый ответ
Во-первых, используйте fetch
в своем fork
для получения информации о состоянии origin
(исходного репозитория)
Затем вы сможете сравнить их состояния и решить, что вы хотите сделать.
Вы сможете переписать историю своего fork
origin
Однако будет сложнее внести изменения origin
в соответствии с вашими fork
предпочтениями.:
- Вам понадобятся дополнительные полномочия
origin
, чтобы переписать историю - Если у вас его нет, вам нужно будет согласовать это с кем-то, кто может сделать это за вас
- Поскольку
origin
он доступен другим людям, их необходимо будет уведомить, потому что это может прервать то, над чем они работают
Для получения более подробного ответа о том, какие операции могут помочь вам достичь этого, вам нужно будет предоставить более подробную информацию о текущем состоянии origin
и вашем fork
, а также о том, в каком состоянии вы собираетесь их использовать. Эта команда может помочь:
git log --graph --oneline --decorate
Ответ №2:
После некоторых исследований мне удалось найти приемлемое решение:
- Найдите хэш коммита перед вашей первой фиксацией
- сброс git — жесткий
- git push -f origin master
- git pull upstream master
- мастер git push origin master
И моя вилка (источник здесь) синхронизируется с восходящим потоком.
Комментарии:
1. Под «вашим первым коммитом» вы подразумеваете первый коммит форка или первый коммит последней работы с момента последнего PR из форка?
2. Прошло много времени с тех пор, как я работал над этой проблемой, но, если я не ошибаюсь, это был первый коммит форка