Стратегия, которую вы предлагаете, может сработать, но вам придется переделать свою работу, что больше работы над всей вашей другой работой. Так что это бесполезно.
Что вы можете сделать, это, учитывая сценарий ios, который у вас есть.
- Если коммит, который вы хотите разделить, является последним коммитом ( последний, который вы сделали), тогда это довольно просто.
git reset --soft HEAD^
Это сбросит ваш последний коммит, но вы сохраните все свои изменения в вашем рабочем каталоге. Тогда вы просто выбираете, какие изменения вы хотите go в одном коммите, а какие go во втором коммите (таким образом, ваш последний коммит делится на два). Тогда вам придется заставить Пу sh.
Если коммит, который вы хотите разделить, является
, а не последним коммитом, то все становится немного сложнее.
Сначала извлеките коммит, который вы хотите разделить .
git checkout <sha1>
Затем сбросьте ваши изменения (как в первом сценарии)
git reset --soft HEAD^
Добавьте и зафиксируйте ваши изменения в два коммита. Теперь, в этот момент, вы успешно разбили желаемый коммит, но нет! Как насчет других коммитов поверх этого? Вам нужно cherry-pick
эти коммиты по одному.
Эти коммиты не теряются. Вы все еще можете найти их в вашем git log
и даже в вашем git reflog
. Для каждого из этих коммитов введите git cherry-pick <sha1>
и bam! Вы успешно разбили коммит на две части.
Теперь здесь все еще есть проблема. Ветвь, на которой вы были, все еще указывает на старые коммиты. Вам просто нужно переместить эту ветку, чтобы указать на текущий совет, на котором вы находитесь. Таким образом, вы можете выполнить git branch -f branch-name new-tip-commit
.
Наконец, принудительно вставьте pu sh вашу ветку, чтобы на пульте были новые коммиты, split!