我刚刚在 github 上创建了一个新的存储库。从一个充满文件的文件夹开始,我所做的步骤是:
git init
git add -A
git remote add origin ...
#Now pull in the first commit that github made
git pull origin master
#Check everything is OK
ls
哎呀!我所有的文件都消失了!发生了什么?我可以让他们回来吗?
我刚刚在 github 上创建了一个新的存储库。从一个充满文件的文件夹开始,我所做的步骤是:
git init
git add -A
git remote add origin ...
#Now pull in the first commit that github made
git pull origin master
#Check everything is OK
ls
哎呀!我所有的文件都消失了!发生了什么?我可以让他们回来吗?
你可以让他们回来。尽管唯一指向它的是索引,git add
但仍将添加的内容放在 repo 中。我会从 a 开始git fsck
寻找“悬空”(git 对“未引用”的稍微古怪的拼写)blob 和git cat-file -p
那些 blob,如果有太多我会做类似find .git/objects -type f | xargs ls -lt
.
对我来说,以下工作:
我希望它有帮助!
我同意接受的答案,但是在我的情况下,结果太多了git fsck
。这个解决方案帮助我找到丢失的文件:
在丢失的文件中搜索字符串:
grep -rin <string_in_missing_file> .git/
例如:
grep -rin MyClassName .git/
搜索结果:
.git//lost-found/other/3cfaa36226f52a5c1b38c2d2da3912656c998826:5:class MyClassName extends ParentClass
.git//lost-found/other/e7b8923de4afb230ad523b5b515f50cb9c624248:5:class MyClassName extends ParentClass
搜索结果在哪里:
.git/<path_to_file>:<line_number_of_found_string>:<found_string_and_context>
然后恢复文件:
git cat-file -p 3cfaa36226f52a5c1b38c2d2da3912656c998826 > ../<desired_file_path>/MyClassName.php
当我尝试推送我的提交并收到提示时,我做了类似的事情:更新被拒绝,因为您当前分支的提示落后于提示:它的远程对应项。在再次推送之前集成远程更改(例如提示:'git pull ...')。
我试图通过
git reset HEAD~3 .
git stash
git pull
git stash pop
git push
并意外地再次拉动并推动更改。我7天的所有工作都丢失了。
这对我来说可以让我的所有工作回到本地分支:
git reset --hard HEAD@{"15 minutes ago"}
由于您从未提交过文件,因此不抱歉。您需要采取的步骤是:
git init
git add .
git commit -m 'Initial commit'
git remote add origin ...
git push origin master
请记住,当有疑问时,请始终承诺。只要你这样做,你总是可以用 git 撤销东西。