Почему git rebase HEAD ~ 3 --autosqua sh не исправляет sh исправления? - PullRequest
0 голосов
/ 02 мая 2020

enter image description here

После запуска git rebase HEAD~3 --autosquash ничего не меняется ... Почему?

1 Ответ

1 голос
/ 02 мая 2020

Обязательно используйте параметр -i с --autosquash. Новые версии Git могут не требовать этого, но более старые будут (и это не повредит).

Что касается вашего комментария : перебазирование сложное.

В частности, git rebase является внешним интерфейсом, который анализирует параметры и другие аргументы, а затем вызывает одну из нескольких различных реализаций rebase:

  • git-rebase--am - это оригинальная rebase, начиная с задолго до того, как даже самые старые текущие версии Git все еще используются (1,7 эпоха). Он использует git format-patch и git am и является наименее способным (но самым быстрым) перебазированием.

  • git-rebase--interactive является стандартным бэкэндом для всех интерактивных перебазировок вплоть до Git версии 2.13 , Он использует git cherry-pick.

  • git-rebase--merge - это вариант неинтерактивного ребазинга, в котором используется cherry-pick. Это форма перебазирования, которую вы получаете с git rebase -m, git rebase -s <em>strategy</em> или git rebase -X <em>eXtended-argument</em>, если только вы не добавите явное -i, в этом случае вы получите интерактивный сервер.

  • git-rebase--preserve-merges - это серверная часть специального назначения, отделенная в Git версии 2.19.0. Он реализует старый стиль git rebase -p. (Для нового git rebase -r требуется новая перебазировка на основе секвенсора, упомянутая ниже.)

  • Начиная с Git 2.13 и продвигаясь дальше через Git 2.19 (когда пресерва сливается обратно конец был отделен), интерактивный бэкэнд перебазирования стал более функциональным (и был написан меньше в сценарии оболочки и больше в C), и теперь использует Git секвенсор код, который ранее в основном был реализовано git cherry-pick и git revert.

  • По состоянию на Git 2.20 git-rebase--interactive больше не существует вообще (но git rebase -i по-прежнему выполняет интерактивную перебазировку). Начиная с Git 2.23, git-rebase--am больше не существует в качестве отдельного внутреннего сценария (но этот стиль перебазирования все еще существует, он обрабатывается более напрямую).

  • По состоянию на Git 2.26, git rebase больше не использует механизм стиля am по умолчанию. (Это может означать, что вам не нужен отдельный параметр -i, но мои собственные Git установки не являются новыми, поэтому я не проверял их.)

* * 1065 Опция * требует использования интерактивного внутреннего механизма и требует, чтобы Git генерировал список коммитов, которые могут быть применены, чтобы код мог проверять субъекты fixup! и squash!. В частности, использование интерактивного механизма отключает проверку «уже обновлено».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...