У мене виникають проблеми з відновленням змін із захованого та не відстеженого файлу в git. Дивіться мінімальний приклад нижче:
mkdir test_stash
cd test_stash/
git init
echo "text" | tee a.txt b.txt
git add a.txt
git commit -m "First commit"
git stash -u #stash b.txt
echo "newtext" > b.txt
git add b.txt
git commit -m "Second commit"
git stash apply
Це повертає мені помилку:
b.txt already exists, no checkout
Could not restore untracked files from stash entry
Приклад лише трохи нерозумний, але я зіткнувся з цією проблемою, коли приховував зміни, перш ніж витягнути з пульта, а потім з'ясував, що новий файл був створений на віддаленому просторі з тим же ім'ям.
Після деякого гуглінгу я зміг відновити зміни за допомогою:
git checkout stash -- .
git checkout stash^3 -- .
git reset HEAD . #to unstage
але це здається досить гакітним. Чи не існує способу змусити мене git stash apply
, тим самим привівши мою робочу область до початкового стану перед сховищем? Зміни в b.txt все одно вже здійснені, тому не так, як я ризикував би втратити незбережені зміни.