我刚刚开设了一个我两周前上次工作的项目,并发现我的工作版本背后有几个版本(使用Mercurial通过Bitbucket)。我的开发机器上的最新已编译程序集是100%最新的,但我的本地和远程代码存储库缺少所有新代码,我在我的开发机器上编译成最新的程序集。
使用Red Gate的.NET Reflector反汇编最新的编译(一个月),我可以看到我所有的最新代码,但现在我的开发机器或任何存储库中都找不到任何代码。这就像我的所有代码回到未来。我是否有可能无意中恢复并覆盖了我的远程存储库中的某些代码,并且没有它的踪迹?
我一定不会提交最新的更改,但这些仍然应该在我的工作副本中吗?我不知道任何系统回滚。我在Windows 7开发盒上运行Visual Studio 2010,我确信这不是Mercurial的错,但是有一些我不知道的功能吗?这怎么可能?
答案 0 :(得分:3)
不提交是总是一个坏主意,提交就是你说“这是什么”而不是“这已经完成”。
hg summary
的输出是什么?是否有可能hg update
到过去的修订版 - 如果是这样的话,所有新的东西仍然在回购中,而不是工作目录。 Mercurial永远不会丢弃已提交的更改,只有在更新时使用--clean
之类的选项时,才会删除未提交的更改。如果您hg revert
.orig
,则除非您执行--no-backup
,否则您将拥有{{1}}个备份文件。
简而言之,Mercurial不会抛弃变化,除非你非常努力地去做,所以要么他们仍然存在,要么就是外在的东西。