Можно ли удалить один файл из git stash? - PullRequest
5 голосов
/ 26 июня 2010

Возможно ли без всплывающего полного тайника и сохранить другой без этого конкретного файла?

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Краткий ответ: нет, стек работает не так. Вы можете сделать следующее, чтобы получить результат, который вы ищете.

Предполагая, что вы спрятали некоторые другие изменения, затем произвели еще несколько изменений в своем индексе ( оригинальные изменения ), и вы решили, что хотите сохранить эти изменения при изменении тайника :

#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'

В какой-то момент (возможно, ближе, чем вы думаете) легче отслеживать реальные ветви.

1 голос
/ 26 июня 2010

Вы можете попытаться, после установки вашего стека, пометить файл, который вы не хотите хранить, как «без изменений»:

git  update-index --assume-unchanged -- /path/to/file

, а затем попробуйте спрятать, проверяя, включен ли указанный файл.

git update-index справочная страница :

--assume-unchanged
--no-assume-unchanged

Если указаны эти флаги, имена объектов, записанные для путей, не обновляются.
Вместо этого эти опции устанавливают и сбрасывают бит «предположить, что он не изменен» для путей.

Когда бит «предположить, что без изменений» включен, git перестает проверять файлы рабочего дерева на предмет возможных изменений, поэтому вам нужно вручную сбросить бит, чтобы сообщить git при изменении файла рабочего дерева.
Это иногда полезно при работе с большим проектом в файловой системе с очень медленным системным вызовом lstat(2) (например, cifs).

Эта опция также может использоваться как грубый механизм на уровне файлов, чтобы игнорировать незафиксированные изменения в отслеживаемых файлах (аналогично тому, что .gitignore делает для неотслеживаемых файлов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...