Кажется, что это проще всего сделать с временными коммитами.Когда вы делаете поэтапные и не постановочные коммиты, у вас есть возможность конфликтов при попытке изменить порядок изменений.
Сделайте коммит с поэтапными изменениями, создайте ветвь для последующего использования:
git commit -m "Saved staged"
git branch save-staged
Выполните фиксацию с неустановленными изменениями (если нетонированные изменения включают в себя новые файлы, вам может понадобиться явно git add
их сначала):
git commit -a -m "Unstaged changes"
Перенесите неотмеченные изменения в исходный HEAD (может потребоваться разрешение конфликта):
git rebase --onto HEAD^^ HEAD^
Перенесите поэтапные изменения на неустановленные изменения (может потребовать разрешения конфликта):
git reset --hard save-staged
git rebase --onto HEAD@{1} HEAD^
Наконец, сбросьте индекс на (изначально) неизмененные изменения:
git reset HEAD^
И переместите указатель ветви обратно в исходную ГОЛОВКУ:
git reset --soft HEAD^
Удалена временная ветвь:
git branch -D save-staged