Один из вариантов, который мне нравится, - это просто сделать временную фиксацию на соответствующей ветке, например.
# work work work
git commit -m 'Completed the feature'
Теперь вы можете перейти на другую ветку и продолжить движение оттуда. Когда приходит время, чтобы вернуться к исходной ветви, вы можете закончить функцию и изменить ВРЕМЕННЫЙ фиксации:
git checkout original_branch
# finish the work
git commit --amend
Теперь остается только один фиксации, и вы были в состоянии сделать исправление где-то остальное.
Обратите внимание, что git stash
внутренне фактически совершает фиксацию (на самом деле 2 или 3 из них), чтобы сохранить состояние вашего рабочего каталога и индекса.
Прочитать lengthy answer about git stash от @torek, перейдя по ссылке.
Я сомневаюсь в предпосылке, которую вы не можете совершить без подкоманды 'commit'. См., Например, команду 'commit-tree' для низкоуровневого интерфейса https://git-scm.com/docs/git-commit-tree. – Boldewyn
То, как я это делал с другими системами управления версиями, состоял в том, чтобы по существу выполнить 'git diff> changes.patch'. И затем повторно примените их позже (с помощью git вы можете сделать это с помощью 'git apply 'или вы можете использовать команду' patch' для повторного применения). Это медведь, которому можно управлять, но это можно сделать. «git stash» более дружелюбен. – jszakmeister
Также вы можете взглянуть на [Gitless] (http://gitless.com/). Они пытались решить, что, по их мнению, более фундаментальные проблемы с Git. В Gitless, когда вы меняете ветви, он сохраняет ваши изменения с помощью ветки, предположительно устраняя необходимость в тайнике. Я не согласен с этим утверждением, но это интересный проект. – jszakmeister