Как я могу сделать эквивалент git rebase -i HEAD~2 в eGit?

Я знаю, как выполнить перебазирование на определенную ветку или тег с помощью eGit в Eclipse, но я не нашел способа выполнить перебазирование на определенный sha1 с помощью eGit. Я хотел бы сделать это, чтобы раздавить коммиты перед отправкой в ​​восходящий поток (т. Е. Выполнение git rebase -i HEAD~n, где n - это некоторое количество коммитов назад, когда я хочу перебазировать). Возможно ли это с eGit? Если нет, есть ли другой плагин Eclipse, который я должен использовать, который обеспечит эту функциональность?


person Zach    schedule 25.08.2011    source источник


Ответы (5)


В настоящее время он доступен в Eclipse Oxygen, для него есть собственный мастер.

  1. Получите нужную ветку в представлении History
  2. Щелкните правой кнопкой мыши фиксацию перед той, которую вы хотите изменить.
  3. Найдите Rebase interactive и нажмите на него
  4. Появится мастер Rebase с коммитами, доступными для работы.

Он работает так же, как консольная версия, но с графическим интерфейсом. Даже если возникнут конфликты, он поможет вам пройти.

person cbaldan    schedule 17.07.2018

EGit имеет rebase, но еще не имеет интерактивной rebase, о которой вы просите.

person robinr    schedule 07.09.2011
comment
см. следующие ссылки, чтобы узнать о ходе работы над этой функцией: bugs.eclipse.org/bugs/ show_bug.cgi?id=340967 bugs.eclipse.org/bugs /show_bug.cgi?id=356939 - person Christian K.; 05.02.2013
comment
Эта функция будет доступна в Eclipse Luna и уже может быть установлена. См. m-sohn.blogspot.com/2013. /11/ - person torkildr; 08.01.2014
comment
В настоящее время он доступен в Oxygen. - person cbaldan; 17.07.2018

Мне удалось раздавить коммиты, используя шаги из этого поста. (вырезать и вставить сюда):

Если я хочу раздавить последние m коммитов в текущей ветке, я

  • выберите в истории первый коммит, который я не хочу раздавливать
  • щелкните правой кнопкой мыши и скажите «Команда-> Сброс-> Программное обеспечение»
  • щелкните правой кнопкой мыши и скажите «Зафиксировать». Этот коммит будет содержать все изменения последних m коммитов вместе.
person Roy Truelove    schedule 13.12.2012

В представлении истории выберите фиксацию, на которую вы хотите перебазироваться, и создайте ветку с именем rebase-point или как-то так. Вуаля, теперь вы можете перебазироваться в эту ветку и удалить ее позже, если хотите. В любом случае я предпочитаю использовать именованную ветку для подобных вещей, потому что это сводит к минимуму вероятность ошибок с моей стороны. В качестве альтернативы, учтите, что origin/master часто является правильной точкой перебазирования, если вы сжимаете коммиты для отправки.

person Karl Bielefeldt    schedule 25.08.2011
comment
Например, при попытке выполнить перебазирование поверх определенного коммита с помощью ответа @KevinSawicki, я также получаю, что перебазирование ничего не сделало, сообщение HEAD уже было обновлено, когда я пытаюсь это сделать? Я думаю, что мне не хватает чего-то очевидного здесь, но я не знаю, что... - person Zach; 29.08.2011
comment
Хм, похоже, вам придется сделать это в ветке функций, прежде чем объединять ее в master, потому что eclipse слишком сильно вам помогает. - person Karl Bielefeldt; 29.08.2011

Вы также можете изменить базу из представления Eclipse History.

  • Выберите репозиторий в представлении Git Repositories.
  • Щелкните правой кнопкой мыши и выберите Показать в истории.
  • Выберите фиксацию, которую вы хотите переустановить в текущей проверенной ветке поверх
  • Щелкните правой кнопкой мыши и выберите элемент Перебазировать поверх.
  • Примечание. Возможно, вам придется сначала выбрать Показать все ветки и теги на панели инструментов просмотра истории, чтобы отобразить искомую фиксацию в таблице.
person Kevin Sawicki    schedule 26.08.2011
comment
Я должен был добавить эту информацию к вопросу, но я изначально думал, что это тоже сработает. Однако при выполнении этого в предыдущем коммите в той же ветке всегда просто появляется диалоговое окно, в котором говорится, что Rebase ничего не делал, HEAD уже был обновлен. - person Zach; 29.08.2011