Сжатые коммиты возвращаются после перебазирования в родительскую ветвь it Git

#git #rebase #pull-request

#git #перебазирование #запрос на извлечение

Вопрос:

У меня есть PR с 8 коммит. Я открыл ветку в командной строке, а git rebase -i HEAD~8 затем выполнил процесс исправления любых конфликтов и свел его к одному коммиту. Когда я нажимаю обновленную ветку, она показывает 1 сообщение о фиксации, но 160 измененных файлов. Я изменил только около 10. So… Я выполнил перебазирование в ветку разработки, которая исправила количество измененных файлов, но все сжатые коммиты возвращаются.

Какой шаг / процесс я здесь пропускаю?

— редактировать —

  • Я запускаю git rebase -i HEAD~8
  • Коммит, который мне нужно «сохранить», является последним. Если я оставлю это как pick и установлю остальные 7 squash , я получу сообщение об ошибке, поэтому я перемещаю его наверх
  • установите 7 под ним на squash
  • сохранить с :wq
  • возникают конфликты, поэтому я разрешаю их в VSCode
  • git add . затем используйте get rebase --continue
  • устраните любые другие конфликты
  • выполните git push -f
  • вижу только 1 коммит, но теперь 160 изменений
  • перебазируйте ветку разработчика в мою ветку git rebase develop
  • разрешите любые конфликты (например, 1 или 2)
  • выполните git push -f
  • теперь изменения верны, но коммиты снова показывают 8 коммитов

Комментарии:

1. Покажите точные команды командной строки, которые вы использовали, потому что, если бы вы сделали это так, как я бы сделал, у вас все равно был бы только один коммит, поэтому вы, должно быть, не вводили команды, которые у меня были бы 🙂

2. Можете ли вы также более подробно объяснить, какие действия вы выбрали при запуске git rebase -i HEAD~8 ? Совместное сжатие коммитов не должно вызывать конфликтов, я предполагаю, что вы каким-то образом проинструктировали git не только делать это.

3. @torek добавил подробности

4. @LeGEC добавил подробности

5. Хорошо, теперь у меня есть представление о том, что происходит. Позвольте мне перепроверить: работаете ли вы здесь с тремя репозиториями Git? Один находится на вашем компьютере, один — ваш форк GitHub, а третий — репозиторий GitHub, к которому вы делаете PR?