Краткий ответ: вы не можете, git предлагает только способы возврата к предыдущим коммитам (например: материал, который вы коммитили, используя git commit
)
Для дальнейшего использования: вы можете запустить git add . && git commit -m WIP
, чтобы «сохранить текущие изменения»
Более длинный ответ: если возвращение предыдущей версии этого файла более важно, чем сохранение вашего психического здоровья, вы можете покопаться в списке висячих капель
Хех, я знал, что у меня где-то есть сценарий:
следующий скрипт выведет список недоступных больших двоичных объектов, которые еще не были упакованы в пакет объектов (как правило, это относится к последним большим двоичным объектам), и отсортирует их по дате создания (фактически: использует дату создания файла в диск как оценка того, когда был создан блоб)
#!/bin/sh
git fsck --no-reflogs --unreachable |\
grep blob |\
cut -d' ' -f3 |\
sed -e 's|^\(..\)\(.*\)|.git/objects/\1/\2|' |\
xargs ls -l -t 2> /dev/null
Некоторые объяснения:
# git fsck --unreachable , if you also use "--no-reflogs" this will search
# through commits which could be reached by the reflog but not by live branches
git fsck --no-reflogs --unreachable |\
# only keep lines mentioning "blobs" (files)
grep blob |\
# keep the 3rd field of the output (hash of blob)
cut -d' ' -f3 |\
# turn hashes into filenames, e.g :
# aee01f414061ea9b0bdbbc1f66cec0c357f648fe ->
# .git/objects/ae/e01f414061ea9b0bdbbc1f66cec0c357f648fe
# (this will be the path of this single blob)
sed -e 's|^\(..\)\(.*\)|.git/objects/\1/\2|' |\
# give this to ls -lt (list by modification time),
# discard messages saying "file does not exist"
xargs ls -l -t 2> /dev/null