Это простой подход, если у вас мало изменений в коде:
1. git stash
2. git stash apply
3. remove the files/code you don't want to commit
4. commit the remaining files/code you do want
Затем, если вы хотите, чтобы код, который вы удалили (биты, которые вы не зафиксировали) в отдельном коммите или в другой ветке, тогда, пока он еще в этой ветке, выполните:
5. git stash apply
6. git stash
На шаге 5, поскольку вы уже применили хранилище и зафиксировали код, который вы хотели получить на шаге 4, diff и неотслеживаемый во вновь примененном хранилище - это просто код, который вы удалили на шаге 3 перед тем, как зафиксировать на шаге 4.
Таким образом, шаг 6 - это тайник кода, который вы [не хотели] фиксировать, поскольку вы, вероятно, действительно не хотите потерять эти изменения, верно? Таким образом, новый stash из шага 6 теперь может быть зафиксирован в этой или любой другой ветке, выполнив git stash apply в правильной ветке и зафиксировав.
Очевидно, это предполагает, что вы выполняете шаги в одном потоке, если вы храните в любой другой точке этих шагов, вам нужно будет отметить ссылку на хранилище для каждого шага выше (а не просто базовую память и применить самую последнюю копию).