Как исправить этот журнал фиксации git?

У меня есть репозиторий на Bitbucket. Я как бы испортил журнал коммитов, когда пытался раздавить коммиты c265825 и 0a1837e:

введите здесь описание изображения

Попытка раздавить эти коммиты привела к 0942142, который в основном пуст. Я имею в виду, что если я попытаюсь просмотреть этот коммит, он не покажет никаких изменений файлов, что может быть нормальным для коммита «слияния» - я не знаю.

Очевидно, что мне нужно исправить такие вещи, прежде чем отправлять их в Bitbucket, но как я могу исправить это постфактум? Я бы хотел, если возможно, раздавить 0942142, c265825 и 0a1837e, чтобы это выглядело как одна фиксация под названием «Удалены неиспользуемые файлы».

PS: Это частное репо (пока), поэтому никто не вносил эти изменения (пока).

Редактировать: ответ TheBuzzSaw ниже верен для подавления всех коммитов с 0a1837e. Однако я хотел просто раздавить эти три коммита и сохранить остальную часть истории (скриншот является макетом, а не реальными изменениями). Поэтому мне пришлось сделать это:

git reset --hard HEAD~7
git cherry-pick -n 0a1837e..c265825
git cherry-pick -n -m 1 0942142
git commit -m "Removed unused files"
git cherry-pick 8f8308b
git cherry-pick f7b14f5
git cherry-pick bb90ff9
git cherry-pick 976985d
git cherry-pick 6f4d0c2

Теперь мой журнал коммитов украшен:

введите здесь описание изображения


person Big McLargeHuge    schedule 14.01.2014    source источник


Ответы (1)


git branch area51
git reset --hard HEAD~7
git merge --squash --no-commit area51
git commit -m "My new commit message."
git push -f
git branch -D area51

При необходимости отрегулируйте.

person TheBuzzSaw    schedule 14.01.2014
comment
Я должен был упомянуть, что у меня есть пять дополнительных коммитов после слияния (0942142). Это что-то меняет? - person Big McLargeHuge; 14.01.2014
comment
Да, но они должны быть незначительными корректировками. Вы можете git reset вернуться в свою безопасную зону, а затем git cherry-pick отдельные коммиты (снова передав опцию --no-commit, чтобы просто применить изменения к текущему состоянию). - person TheBuzzSaw; 14.01.2014
comment
Извините, я довольно запутался. Можете посмотреть обновленный лог в моем посте и сказать, что именно мне нужно сделать? - person Big McLargeHuge; 14.01.2014
comment
Обновил мой ответ. Я предполагаю, что вы хотите, чтобы все сжалось обратно в 3c0392f. Поэкспериментируйте с командами, которые я разместил. Это должно привести его в состояние, которое работает для вас. Не делайте git push, пока все не будет выглядеть правильно. Используйте git log. - person TheBuzzSaw; 14.01.2014
comment
Я хотел бы сохранить коммиты 8f8308b..6f4d0c2, если это возможно. Я пытался использовать git reset --hard HEAD~7, а затем git cherry-pick -n 0a1837e..c265825 и git cherry-pick -m 1 0942142, но теперь я не уверен, нужно ли мне объединяться, сжиматься или что-то в этом роде. Этот бизнес по переписыванию истории сложен. - person Big McLargeHuge; 15.01.2014
comment
Если вы выбираете вишни, вам не больше не нужно слияние. - person TheBuzzSaw; 15.01.2014
comment
давайте продолжим это обсуждение в чате - person Big McLargeHuge; 15.01.2014