Сохранение только рабочего дерева (неустановленные изменения) в Git сложнее, чем должно быть. Принятый ответ хранит неустановленные изменения, но также сохраняет поэтапные изменения (и оставляет их также поэтапными), что редко является тем, что вы хотите.
Этот псевдоним работает хорошо:
stash-working = "!f() { \
git commit --quiet -m \"temp for stash-working\" && \
git stash push \"$@\" && \
git reset --quiet --soft HEAD~1; }; f"
Он временно фиксирует поэтапные изменения, создает тайник из оставшихся изменений (и позволяет передавать дополнительные аргументы, такие как --include-untracked
и, --message
в качестве аргументов псевдонима), а затем сбрасывает временную фиксацию для возврата поэтапных изменений.
Это похоже на @Simon Кнапп ответ , но с некоторыми незначительными отличиями - он использует --quiet
на временных мерах , принятых, и он принимает любое количество параметров для тайника push
, а не жесткого кодирования -m
, и он добавляет --soft
к финалу сбросить, чтобы индекс остался таким же, как и начался.
Для противоположной проблемы хранения только поэтапных изменений (псевдоним stash-index
) см. Этот ответ .