Хорошо, я сталкивался с этим несколько раз, и это действительно раздражает. Сценарий:
modify a file say a.txt (add say two lines)
stash it
stash apply
git reset
remove the two lines added to a.txt because you want to commit and push these partial changes
git add a.txt
git commit the above, and push the changes (push irrelevant for this discussion)
git reset --hard
now do git stash apply
Теперь a.txt - это та же версия, что была зафиксирована, это должна быть версия, которую я спрятал. Таким образом, теперь я потерял свои изменения в .txt. Если я вернусь один коммит, т.е. git co head ~ 1 и примените мой тайник, он все еще не работает.
Исправление будет высоко ценится.
Спасибо.
Хорошо, поэтому я много пытался с помощью скрипта воспроизвести это, пробовал много вариантов коммитов слияния и т. Д. И не смог воспроизвести его. К сожалению, в сценарии для меня очень сложно воспроизвести сложность дерева исходных текстов, над которым я работал, когда это произошло. Еще одна проблема, о которой я сейчас думаю, это то, что у меня было несколько тайников, основанных на разных версиях одной и той же ветки, с некоторыми загруженными файлами, некоторые файлы, переданные локально, которые были в этих тайниках. Мои команды только когда-либо применяли последний тайник, как описано ранее, но в течение всего этого процесса я потерял 2 тайника, они просто исчезли при выполнении списка git stash. Так что, может быть, это как-то влияет на результат. Если кто-нибудь сталкивается с чем-либо подобным, пожалуйста, обновите эту тему. Если кто-то заинтересован в продолжении моего тестирования, я могу опубликовать свой сценарий (полностью самодостаточный, создает хранилище и все остальное). Тем временем я продолжу использовать git, и в следующий раз, когда это произойдет, возможно, я получу лучшее представление о том, что произошло.
Также это произошло на работе, поэтому я не могу предоставить оригинальный код, но я еще раз посмотрю на результаты gitk и опубликую свои выводы, поскольку это может помочь.
Спасибо за помощь!
Хорошо, так что, глядя на gitk, я вижу, что мой тайник основан на индексе (который я считаю нормальным), тогда этот индекс основан на коммите, который, кажется, существует только в тайнике (это не имеет смысла Т.е. в файле save есть сообщение о коммите, которое я дал ему, когда я зафиксировал его в своей частной ветви, но каким-то образом моя частная ветвь не имеет этого коммита как часть пути gitk.