Действительно ли это возможно без поп целый притон, и сохраните другого без этого конкретного файла?
Краткий ответ: нет, стек работает не так. Вы можете сделать следующее, чтобы получить желаемый результат.
Предполагая, что вы сохранили некоторые другие изменения, затем внесли еще несколько изменений в свой индекс ( исходные изменения ), и вы решили, что хотите сохранить эти изменения, изменяя тайник. :
#verify the state you are in
git stash list
git status
git stash #push work in progress on the stash
git stash list #check which stash you need
git stash show stash@{1} #check the changes in the stash
git stash pop stash@{1} #you're now ready to change your 'other' changeset
# hack hack
git stash #modified 'other' change set pushed on the stash
git stash pop stash@{1} #your 'original changes'
Я бы порекомендовал этот рабочий процесс вместо попыток напрямую изменить тайник. Если вы потерялись в числах тайников, вы также можете использовать git stash save 'some other changes'
В какой-то момент (возможно, ближе, чем вы думаете) легче отслеживать настоящие ветки.
Вы можете попробовать после извлечения вашего стека пометить файл, который вы не хотите хранить, как "неизменный":
git update-index --assume-unchanged -- /path/to/file
, а затем попробуйте спрятать, проверяя, включен ли указанный файл или нет.
git update-index
страница руководства :
--assume-unchanged
--no-assume-unchanged
Если указаны эти флаги, имена объектов, записанные для путей, не обновляются.
Вместо этого эти параметры устанавливают и сбрасывают бит «считать неизменным» для путей.Когда установлен бит «считать неизменным», git прекращает проверку файлов рабочего дерева на предмет возможных изменений, поэтому вам нужно вручную сбросить бит, чтобы сообщить git, когда вы изменяете файл рабочего дерева.
Это иногда полезно при работе с большим проектом в файловой системе, которая имеет очень медленный системный вызовlstat (2)
(например,cifs
).Этот параметр также можно использовать как грубый механизм на уровне файла для игнорирования незафиксированных изменений в отслеживаемых файлах (аналогично тому, что
.gitignore
делает для неотслеживаемых файлов)