Вы можете использовать ребаз здесь, чтобы изменить историю, или набрать sh ваших коммитов. У вас есть несколько вариантов, которые я вижу для этого:
Перебазируйте и используйте «edit» для изменения ваших коммитов
Описание «edit»: e, edit <commit> = use commit, but stop for amending
. Вы можете использовать это для go назад, чтобы исправить вашу привязку или что-то еще на коммите 2 и 3, который затем включит их в эти коммиты снова.
git rebase -i HEAD~3
# use "e" or "edit" for commits 1 and 2
# adjust them as necessary, then git rebase --continue each time
Squa sh все в одном
Вы теряете детализацию ваших сообщений о коммитах, но это также быстрый и простой способ решения вашей проблемы.
git rebase -i HEAD~3
# choose "s" or "squash", or "f" or "fixup" which is like squash but discards commit
# messages
Вы также можете git reset target-branch-name
, который сделает мягкий сброс, сохраняя все ваших изменений между вашей веткой и target-branch-name
, но сбрасывает ваши коммиты. Затем вы могли бы исправить весь ваш код вместе и повторно зафиксировать их, когда вы будете sh.
Все эти предложения требуют принудительной операции pu sh, так как вы переписали историю своего местное отделение.