Почему все мои файлы помечаются Git для удаления после выполнения команды git stash pop -q?

Я пытаюсь реализовать код ловушки Git в следующем потоке (последнее сообщение): Git: Как повторно разместить подготовленные файлы в обработчике предварительной фиксации . Я помещаю следующий код в свой хук после фиксации git stash pop -q, и после его выполнения все мои файлы в моем проекте помечаются для удаления (!), и мне нужно вернуть все файлы, чтобы вернуться в нормальное состояние. За исключением этого, все работает нормально, я могу изменить (в хуке перед фиксацией) файл, который уже был подготовлен для фиксации, и сама фиксация прошла успешно, и после этого она содержит то, что я хочу. Что я могу делать неправильно? Я новичок в Git, поэтому используйте простую терминологию.


person arnold_w    schedule 13.11.2019    source источник
comment
git stash pop означает запустить git stash apply (с теми же флагами), затем, если он говорит, что это удалось, запустить git stash drop (в том же тайнике, выбранном для применения). Флаг -q просто делает операцию тихой, поэтому она применяется, а затем удаляется в случае успеха, тайник по умолчанию с именем stash@{0} или просто stash. Если все помечено для удаления, это говорит о том, что в тайнике было пустое дерево с родителем, совпадающим с вашим текущим деревом, так что разница между родителем тайника и спрятанным рабочим деревом заключалась в удалении всех файлов.   -  person torek    schedule 14.11.2019
comment
(Без дополнительной информации трудно предположить что-либо еще.)   -  person torek    schedule 14.11.2019
comment
Значит, вы подозреваете, что я неправильно создаю тайник? Я использую именно код из заголовка stackoverflow.com/questions/26886363/ , то есть git stash save -q --keep-index "current wd" для создания тайника.   -  person arnold_w    schedule 14.11.2019
comment
Возможно. Или, возможно, git stash save --keep-index не создал тайник, что является одним из его действий; в этом случае вы бы открыли несвязанный тайник. Трудно написать хороший сценарий с git stash. См. также все ответы на stackoverflow.com/q/20479794/1256452.   -  person torek    schedule 14.11.2019
comment
Если я запускаю команду git stash save -q --keep-index "current wd" вручную из C:\Program Files\Git\bin\sh.exe, а затем использую TortoiseGit для проверки только что созданного тайника, то, похоже, все в порядке. Если я сравниваю тайник с моим рабочим деревом, я вижу ожидаемые изменения, поэтому создание тайника кажется успешным.   -  person arnold_w    schedule 14.11.2019
comment
Хм, другие варианты включают использование git commit --only или git commit -a, которые переключают Git с использования (обычного) индекса на использование временного индекса, который может сломать git stash и/или позже применить интересные способы.   -  person torek    schedule 14.11.2019


Ответы (1)


-q - это проблема

тихий вариант кажется глючным

https://www.spinics.net/lists/git/msg369570.html

person Nathan Gouy    schedule 06.05.2021