Автоматически перебазировать и сквошить историю Git из идентификатора коммита в HEAD из филиала в мастер - PullRequest
0 голосов
/ 05 октября 2018

Можно ли использовать git rebase, чтобы удалить всю историю из определенного коммита в ревизию HEAD?

При git -i rebase вам необходимо подсчитать все коммиты в git logи вручную получить сквош всех из них, кроме одного коммита, прежде чем вносить изменения.

Существует ли однострочник для следующих действий:

  1. git rebase -i HEAD~4 для 4 коммитов
  2. В текстовом редакторе раздавите все и оставьте один выбор (Я думаю, вам нужно выбрать хотя бы один коммит)
  3. git fetch origin, чтобы обновить ссылки
  4. git rebase origin/master, чтобы переместить ветку на мастер
  5. git checkout master, чтобыпереключитесь на основную ветку
  6. git merge branch_name, чтобы объединить ветку с ведущей

Возможно ли сделать это с меньшим количеством шагов или другими флагами?

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Я полагаю, что вы ищете git commit --fixup . Описание Thoughtbot по автоматизации этого может вас заинтересовать.

0 голосов
/ 06 октября 2018

Вместо git rebase -i вы можете запустить git rebase --soft <commit-id>, чтобы переместить HEAD в <commit-id> без изменения индекса или рабочего дерева, тогда git commit для созданияновый коммит, содержащий все изменения, начиная с <commit-id>.

...