Я пытаюсь реализовать код ловушки Git в следующем потоке (последнее сообщение): Git: Как повторно разместить подготовленные файлы в обработчике предварительной фиксации . Я помещаю следующий код в свой хук после фиксации git stash pop -q
, и после его выполнения все мои файлы в моем проекте помечаются для удаления (!), и мне нужно вернуть все файлы, чтобы вернуться в нормальное состояние. За исключением этого, все работает нормально, я могу изменить (в хуке перед фиксацией) файл, который уже был подготовлен для фиксации, и сама фиксация прошла успешно, и после этого она содержит то, что я хочу. Что я могу делать неправильно? Я новичок в Git, поэтому используйте простую терминологию.
Почему все мои файлы помечаются Git для удаления после выполнения команды git stash pop -q?
Ответы (1)
-q - это проблема
тихий вариант кажется глючным
https://www.spinics.net/lists/git/msg369570.html
person
Nathan Gouy
schedule
06.05.2021
git stash pop
означает запуститьgit stash apply
(с теми же флагами), затем, если он говорит, что это удалось, запуститьgit stash drop
(в том же тайнике, выбранном для применения). Флаг-q
просто делает операцию тихой, поэтому она применяется, а затем удаляется в случае успеха, тайник по умолчанию с именемstash@{0}
или простоstash
. Если все помечено для удаления, это говорит о том, что в тайнике было пустое дерево с родителем, совпадающим с вашим текущим деревом, так что разница между родителем тайника и спрятанным рабочим деревом заключалась в удалении всех файлов. - person torek   schedule 14.11.2019git stash save -q --keep-index "current wd"
для создания тайника. - person arnold_w   schedule 14.11.2019git stash save --keep-index
не создал тайник, что является одним из его действий; в этом случае вы бы открыли несвязанный тайник. Трудно написать хороший сценарий сgit stash
. См. также все ответы на stackoverflow.com/q/20479794/1256452. - person torek   schedule 14.11.2019git stash save -q --keep-index "current wd"
вручную изC:\Program Files\Git\bin\sh.exe
, а затем использую TortoiseGit для проверки только что созданного тайника, то, похоже, все в порядке. Если я сравниваю тайник с моим рабочим деревом, я вижу ожидаемые изменения, поэтому создание тайника кажется успешным. - person arnold_w   schedule 14.11.2019git commit --only
илиgit commit -a
, которые переключают Git с использования (обычного) индекса на использование временного индекса, который может сломатьgit stash
и/или позже применить интересные способы. - person torek   schedule 14.11.2019