git read-tree之后丢失的文件

时间:2013-03-04 03:39:55

标签: git

我在本地仓库(分支develop)中运行了以下命令集,尝试在项目中git一个子目录(assets/App)链接到远程仓库的App目录,这样当他们更新代码时,我可以获得这些更新而无需从克隆中复制/粘贴:

git remote add durandal git://github.com/BlueSpire/Durandal.git
git fetch durandal    #now I have a remote branch with all of Durandal
git checkout -b durandal durandal/master    #now I have a local branch with the contents of durandal/master and have switched to it
git config core.sparsecheckout true    #trying some sparse-checkout stuff, not really understanding what I'm doing
echo App/ > .git/info/sparse-checkout
git checkout develop     #back in my develop branch
git read-tree --prefix=assets/App/ -u durandal     #all hell breaks loose

此时,我的所有文件都从分支develop消失了,除了assets/App/(以及.gitignore中的那些文件),现在这些文件已从{{1}复制了App文件夹。我立即跑durandal branch无济于事。我尝试用sha重置。不。我尝试从我的Dropbox遥控器中拔出,应该备份所有东西。同样的交易。我厌倦了切换到主人,所有文件也从那里消失了,我完全不理解。我看不出如何恢复。

我知道如果不真正理解我在做什么,我不应该这样做但有人可以帮助我将我的回购回到我实验之前的位置吗?其次,我做了什么导致这种情况以及如何实现我的目标呢?

1 个答案:

答案 0 :(得分:1)

从基础开始(我从来没有看过稀疏的结账,只是模糊地知道它存在)我试试

rm .git/index
rm .git/info/sparse-checkout
git config core.sparsecheckout false
git checkout develop@{yesterday}      # `man gitrevisions` docs the @{} syntax

但希望实际上在某个地方的人可以确定这是否有用。