Зберігати лише робоче дерево (без змін) у 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) дивіться цю відповідь .