1

我的一位同事今天早上正在处理一个 VS 项目,他声称该项目位于我们中央存储库的文件夹克隆中。他构建了一个应用程序的发布版本,该版本仍然存在,上面有正确的日期/时间戳。

然后他说他在这段时间内提交了几次,但在某个时候,他尝试从中央存储库中拉下更改并将它们与他的更改合并。他真的不记得自己采取了哪些步骤,但最终的结果是,他对源头所做的所有更改都丢失了。现在,我正在尝试帮助他看看我们是否可以恢复这些更改。

他在提交更改(几次提交)后告诉我,他进入 tortoisehg 工作台,拉动,看到中央存储库中有很多更改。他决定“与本地合并”或“更新”到下拉的提示 - 他不记得是哪个。我向他展示了这两个对话框,并问他是否放弃了更改、搁置或其他任何事情。他不记得了,真的,但他确实记得他必须退出,因为乌龟不喜欢他正在做的事情。最终,他似乎确实能够更新到存储库提示。

我在想,除非他实际删除了他正在工作的文件夹,然后得到最新的,否则他声称所做的那些提交会被记录在某个地方吗?人们在拉取远程仓库时会犯哪些常见错误?是否有任何日志文件或历史记录我可以检查以查看我是否可以挽救或至少告诉他在哪里工作?

任何解决此问题的提示将不胜感激。

4

2 回答 2

2

首先在某处备份树,包括 .hg 及其下的所有内容。然后...

hg heads

...看看他是否只是忘记了他的提交。如果它在那里,那只是更新回它并进行适当合并的情况。

hg log -u 'His Username'

...查看提交是否在存储库中的任何位置。如果他们在那里,您可以从他们那里继续工作。

hg shelve --list

...看看他是否设法将东西搁置在某个地方

看一看.hg/strip-backups,看看他是否设法以某种方式剥离了他的更改。任何其他破坏性的东西也应该留下备份.hg

这应该是一个好的开始。如果这些都没有提供任何线索,那么其他人可能会提出一些建议。

于 2012-05-23T15:54:02.407 回答
1

我不知道 TortoiseHG,但通常第一件事是检查hg out

于 2012-05-23T06:54:50.060 回答