Странный случай мерзавца - притон мерзавца, сопровождаемый притоном мерзавца, применяет потерянные незафиксированные данные?

У меня есть файл, скажем, file.txt, я сделал мерзавца mv file.txt к file1.txt, затем я создал новый файл под названием file.txt и работал над ним. К сожалению, я не добавил что файл к мерзавцу все же. Так или иначе проблема состоит в том, что я сделал притон мерзавца, затем притон мерзавца применяется, но новый file.txt исчез... так или иначе для возвращения его?

6
задан Alexis King 14 April 2015 в 06:41
поделиться

3 ответа

Проблема здесь в основном в неправильном понимании того, что делает git stash save . Сохраняются только изменения в отслеживаемых файлах. Не отслеживаемые файлы не сохраняются с помощью git stash . Когда вы переместили file.txt в file1.txt, новый файл file.txt является неотслеживаемым файлом, и не будет сохранен git stash . Это не ошибка, это просто поведение git stash . Возможно, в документации для git stash это должно быть более ясно.

Как указано в документации для git stash save , он выполнит git reset --hard после сохранения ваших изменений. Это был git reset --hard , который перезаписал новый файл file.txt. Кто-то может возразить, что git reset --hard должен генерировать предупреждение, если неотслеживаемый файл будет перезаписан, но я бы все равно не назвал это ошибкой. Он делает то, что должен делать.

Здесь важно понять - и что избавило бы вас от многих проблем - это то, что git stash save не сохраняет неотслеживаемые файлы (и, вероятно, не должно) .

9
ответ дан 8 December 2019 в 14:41
поделиться

Похоже, серьезная ошибка (например, потеря данных) в тайнике. Пожалуйста, сообщите об этом. К сожалению, я не верю, что есть способ вернуть новый file.txt .

Эта ошибка исправлена ​​в git> = 1.7.1.1.

4
ответ дан 8 December 2019 в 14:41
поделиться

Этот пост предназначен для простой иллюстрации процесса воссоздания, не забиваясь комментариями. Примечание: Использование Git версии 1.7.0.2

Для воссоздания:

~/test $ git init
~/test $ echo "hello" > file.txt
~/test $ git add .
~/test $ git commit -m "init commit"

~/test $ git mv file.txt file1.txt
~/test $ echo "new data" > file.txt
~/test $ git stash
~/test $ git stash apply

~/test $ cat file.txt
cat: file.txt: No such file or directory

~/test $ cat file1.txt
hello
1
ответ дан 8 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: