Чи є більш чіткий спосіб впоратися із застосуванням прихованої скриньки?


1

У мене виникають проблеми з відновленням змін із захованого та не відстеженого файлу в 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 все одно вже здійснені, тому не так, як я ризикував би втратити незбережені зміни.

Відповіді:


1

Коли ви зберігаєте прихований git, також пам’ятаєте про вчинення. Таким чином, ви можете просто створити нову гілку на основі цього зобов’язання git stash branch <branchname>замість того, щоб застосувати скрипт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.