Оновлення 2:
Я не впевнений, чому люди скаржаться на цю відповідь, схоже, він ідеально працює зі мною, для непророблених файлів ви можете додати -u
прапор
Повна команда стає git stash --keep-index -u
І ось фрагмент git-stash
довідки
Якщо використовується параметр --keep-index, всі зміни, вже додані до індексу, залишаються недоторканими.
Якщо використовується параметр --include-untracked, усі відстежувані файли також зберігаються, а потім очищаються за допомогою git, залишаючи робочий каталог у дуже чистому стані. Якщо замість цього використовується параметр --all, то проігноровані файли зберігаються та очищаються на додаток до невідстежених файлів.
І це gif того, як це виглядає:
Оновлення:
Незважаючи на те, що це обрана відповідь, багато хто зазначав, що [відповідь нижче] (https://stackoverflow.com/a/34681302/292408) є правильною, я рекомендую перевірити її.
Сьогодні я знову перевірив свою відповідь (31/1/2020) щодо версії git 2.24.0
, і я досі вважаю, що вона правильна. Якщо ви вважаєте, що це не працює, також згадайте вашу версію git.
Стара відповідь :
Якщо використовується --keep-index
параметр, усі зміни, вже додані до індексу, залишаються недоторканими:
git stash --keep-index
З документаціїgit-stash
:
Тестування часткових комітів
Ви можете використовувати, git stash save --keep-index
коли ви хочете зробити два або більше комітів із змін у робочому дереві, і ви хочете перевірити кожну зміну перед фіксацією:
# ... hack hack hack ...
$ git add --patch foo # add just first part to the index
$ git stash save --keep-index # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part' # commit fully tested change
$ git stash pop # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'
Але якщо ви просто хочете візуально перевірити лише поетапні зміни, ви можете спробувати difftool
:
git difftool --cached
-k
варіант) або громіздкими у використанні.