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