Как восстановить проект имея только папку .git?
Размер папки нормальный (не ноль) и git log выводит все коммиты.
Ответ
вы можете резетнуться на коммит (git reset --hard) или сделать git checkout . в корне репозитория - если не закоммитили удаление всех файлов. если закоммитили - вам надо резетнуться на последний коммит (git log)
в приведенном примере мы создаем репу, добавляем файл, удаляем, остается только папка .git, восстанавливаемся из нее обоими способами. (до нового коммита и с помощью резета)
-user~/temp$ mkdir gtest
-user~/temp$ cd gtest
-user~/temp/gtest$ git init
Initialized empty Git repository in /home/user/temp/gtest/.git/
-user~/temp/gtest (master)$ touch 123
-user~/temp/gtest (master)$ echo 123 > 123
-user~/temp/gtest (master)$ kommit done
## Initial commit on master
?? 123
[master (root-commit) d6089c5] done
1 file changed, 1 insertion(+)
create mode 100644 123
-user~/temp/gtest (master)$ rm 123
-user~/temp/gtest (master)$ git status
On branch master
Changes not staged for commit:
(use "git add/rm
deleted: 123
no changes added to commit (use "git add" and/or "git commit -a")
-user~/temp/gtest (master)$ git checkout .
-user~/temp/gtest (master)$ git status
On branch master
nothing to commit, working directory clean
-user~/temp/gtest (master)$ ls
123
-user~/temp/gtest (master)$ git log
commit d6089c549be7b2e922f1d1b31960ee34166d1ae6
Author: user <“user@user.com”>
Date: Sat Jul 30 2016 +0300
done
-user~/temp/gtest (master)$ git reset --hard d6089c549be7b2e922f1d1b31960ee34166d1ae6
HEAD is now at d6089c5 done
-user~/temp/gtest (master)$ ls
123
-user~/temp/gtest (master)$
P.S.
команда kommit это алиас типа
function gitAddAndCommit(){
git status -bs
git add . ; git commit -m "$1" --no-verify
}
alias kommit=gitAddAndCommit
P.P.S.
(master) в prompt - это имя текущей ветки, что-то в этом духе.
Очень удобная штука.
Комментариев нет:
Отправить комментарий