Soooo ....我做了“git reset HEAD myfilename”,它删除了我所有的本地修改。我认为我没有对当地的回购进行任何承诺。如何恢复“混帐重置”更改?
有没有办法恢复已删除的代码? :L
Soooo ....我做了“git reset HEAD myfilename”,它删除了我所有的本地修改。我认为我没有对当地的回购进行任何承诺。如何恢复“混帐重置”更改?
有没有办法恢复已删除的代码? :L
git reset HEAD filename
刚刚送走缓存变化指数(基本上,撤消git add
)。如果你有工作副本的变化,你不能再拥有他们,别的东西没有他们在
当你这样做:
git checkout -- js/ModuleVk.js
这抓住了HEAD
版本的js/ModuleVk.js
写道,到索引,然后将其写入工作树中。所以那可能会发生破坏性的变化。
如果做做到这一点之前git add
,不过,回购包含在add
发生时的工作文件的副本。你可以用git fsck --lost-found
发现这一点,这将打印一些像这样数量的消息:
dangling commit 7a07e53b3c753c93303c881605c81cc476c6a1de
dangling blob 8177212592bb88a3c4614ee288d6a8a01dee0b42
dangling commit 83630458b4317f5db42c3a306e299ca8c26a7ed9
dangling blob b50f361891f38b85a5733b3124e261654ed457ad
dangling blob b67bea2cf13d558e4092e9c1939b2273ac904f83
当这一切都完成了你.git
目录将有一个名为lost-found
一个子目录,这反过来将有一个名为两个子目录commit
和other
。
other
中的文件都有SHA-1名称,所以你必须手动查看它们。应该很明显哪些是.js
代码,但是要确定哪一个是哪个版本可能会非常棘手,这取决于您随着时间的推移编写了多少东西,但没有实际提交。 (我习惯上git add
东西,git diff --cached
,决定改一些,git add
再次,等等。每一个把另一个“晃来晃去的斑点”放到版本库中,最终被gc化,磁盘空间很便宜。 。)
一旦你在那里与文件完成后,你可以手动删除.git/lost-found
一切:
rm -r .git/lost-found
(你可以用另一个git fsck --lost-found
后重新生成它们,虽然一度垃圾收集收割晃来晃去的对象他们真的很好 - 但默认情况下,对于“新鲜”对象至少需要两周)。
不,如果文件消失了,那么它们就消失了。
如果你使用Eclipse,你仍然可以找到他们在当地的历史(试比较... /本地历史记录......)
普通'git reset',又名'git reset --mixed',不会触及工作文件。你有没有做别的,也许'git reset --hard'? – torek
没有。我只是.. err ..试图从提交中删除文件,我想现在我明白git藏匿。但我没有这么做 - 很难确定,也不能在任何当地的分支机构找到我的变化。 – deb0rian
其实这是我做的: '982 2014-02-25 12:48:28 git status 983 2014-02-25 12:48:38 git reset HEAD引擎/ SocialIntegFrontend。php 984 2014-02-25 12:48:46 git status 987 2014-02-25 12:49:06 git reset HEAD js/ModuleVk.js 988 2014-02-25 12:49:25 git checkout - - js/ModuleVk.js ' Unfixable,对不对? – deb0rian