新代码出现了AWOL,旧版本。它去了哪里?

时间:2011-01-03 12:04:31

标签: version-control mercurial

我刚刚开设了一个我两周前上次工作的项目,并发现我的工作版本背后有几个版本(使用Mercurial通过Bitbucket)。我的开发机器上的最新已编译程序集是100%最新的,但我的本地和远程代码存储库缺少所有新代码,我在我的开发机器上编译成最新的程序集。

使用Red Gate的.NET Reflector反汇编最新的编译(一个月),我可以看到我所有的最新代码,但现在我的开发机器或任何存储库中都找不到任何代码。这就像我的所有代码回到未来。我是否有可能无意中恢复并覆盖了我的远程存储库中的某些代码,并且没有它的踪迹?

我一定不会提交最新的更改,但这些仍然应该在我的工作副本中吗?我不知道任何系统回滚。我在Windows 7开发盒上运行Visual Studio 2010,我确信这不是Mercurial的错,但是有一些我不知道的功能吗?这怎么可能?

1 个答案:

答案 0 :(得分:3)

不提交是总是一个坏主意,提交就是你说“这是什么”而不是“这已经完成”。

hg summary的输出是什么?是否有可能hg update到过去的修订版 - 如果是这样的话,所有新的东西仍然在回购中,而不是工作目录。 Mercurial永远不会丢弃已提交的更改,只有在更新时使用--clean之类的选项时,才会删除未提交的更改。如果您hg revert .orig,则除非您执行--no-backup,否则您将拥有{{1}}个备份文件。

简而言之,Mercurial不会抛弃变化,除非你非常努力地去做,所以要么他们仍然存在,要么就是外在的东西。