我刚在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
伊克!我的所有文件都消失了!发生了什么?我可以让他们回来吗?
答案 0 :(得分:11)
你可以让他们回来。即使唯一指向它的是索引,git add
仍然将添加的内容放在回购中。我从一个git fsck
开始找到“悬空”(git略微古怪的“未引用”拼写)blob和git cat-file -p
这些blob,如果有太多我会做{{1}这样的事情}。
答案 1 :(得分:2)
我同意接受的答案,但在我的案例中,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
答案 2 :(得分:1)
当我尝试推动提交并得到 提示:由于您当前分支的提示位于后面,因此更新被拒绝 提示:它的远程副本。集成远程更改(例如 提示:“ git pull ...”),然后再次按下。
我尝试通过
恢复提交git reset HEAD~3 .
git stash
git pull
git stash pop
git push
,不小心再次拉动并推动更改。我所有的7天工作都丢失了。
这对我来说很有效,可以将我的所有工作都恢复到本地分支机构:
git reset --hard HEAD@{"15 minutes ago"}
答案 3 :(得分:0)
由于你从未提交过文件,不好意思。您需要采取的步骤是:
git init
git add .
git commit -m 'Initial commit'
git remote add origin ...
git push origin master
请记住,如有疑问,请务必提交。只要你这样做,你就可以随时用git撤消。
答案 4 :(得分:0)
对我来说,以下工作有效:
希望对您有帮助!