2013-03-04 129 views
3

我跑到下面的一组我的本地回购(分支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这些文件),它现在有从durandal branch应用程序文件夹复制的内容。我立即跑git reset --hard无济于事。我试着用沙子重置。不。我尝试从我的保管箱中取出应该备份了所有东西的遥控器。同样的交易。我厌倦了转向主人,所有的文件也从那里消失了,我完全不明白。我看不出如何恢复。

我知道我不应该在没有真正理解我在做什么的情况下做到这一点,但是有人能帮我将我的回购回到我实验之前的位置吗?其次,我做了什么来造成这种情况,我该如何完成我想要做的事情?

回答

1

从基础去(我从来没有看着稀疏结账超越隐约知道它的存在),我想尝试

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

,但希望有人谁的实际上是你在哪里,可以肯定地说这是否会工作。

+0

它的工作!谢谢!我实际上不需要运行最后一个命令,因为我注意到我的舞台现在显示了所有标记为准备删除的缺失文件。我'git reset --hard'并恢复正常。 我了解到,通过[子树合并](https://help.github.com/articles/working-with-subtree-merge),可以简单而安全地完成我之后完成工作的最佳方式。 – neverfox 2013-03-04 20:37:25