【问题标题】:Some code was lost after doing bzr commit --local, bzr pull, bzr commit在执行 bzr commit --local、bzr pull、bzr commit 后,一些代码丢失了
【发布时间】:2010-07-01 23:58:17
【问题描述】:

我团队的一位开发人员一直在使用绑定到服务器的分支(IE,只使用 checkout、update 和 commit),但也经常在提交时使用 --local 标志,然后批量提交到服务器.她最近遇到了一种情况,即她缺少一些本地提交,并且无法在 repo 或她的本地代码中找到它们。她怀疑这是因为她在本地提交和服务器提交之间的某个时间点进行了拉取。

我们俩都没有特别的 Bazaar 经验 -- 可能发生了什么,我们在哪里可以找到这个丢失的代码?她相当肯定她从未做过任何破坏性的事情,而且我相当肯定 Bazaar 会问她是否会这样做。我隐约记得 Bazaar 在更改一堆代码之前有一些“隐藏的”repos/trees/任何东西的概念,有人可能会从中恢复丢失的代码,但我无法通过谷歌搜索那是什么。

【问题讨论】:

    标签: version-control bazaar


    【解决方案1】:

    我发现我所指的“'隐藏' repos/trees/whatever”是“死头”,用bzr heads查看。

    我们找到了我们的死头并将其合并回 -- 代码已保存!

    $ bzr heads
    $ # output shows various heads, with names like: revision-id: john@mycomputer-20100630175358-39qro1z5qdq2o9ay(dead)
    $ bzr merge john@mycomputer-20100630175358-39qro1z5qdq2o9ay
    

    【讨论】:

    • 正确。您需要安装 bzrtools 插件才能使 bzr heads --dead 正常工作。
    【解决方案2】:

    如果一切都失败了,你可以尝试在 bazaar IRC 频道询问。

    Go there now* 并进入#bzr 频道。那里通常有人,他们通常很有帮助。

    **这是freenode的网页界面。如果你之前没用过IRC,你自己编一个昵称,选择#bzr频道,不需要auth(只要你的昵称是唯一的)。*

    【讨论】:

    • 谢谢!我实际上在此之前去过那里,但周围没有人。那个地方很有帮助!然后是欧洲的早晨,人们醒来并回答了我的问题(我将在写完这篇文章后分享)。
    【解决方案3】:

    你可以随时做一个

    bzr status
    

    如果有任何未提交的更改(包括尚未提交的合并),您应该这样做。这可能有助于确定一切的位置。如果您进行了合并并且您没有跟进提交(无论是否存在冲突),那么合并的结果将保持未提交。

    执行bzr pull 不应该消除任何工作 - 据我了解,如果本地分支有未提交的更改,它应该会失败。

    【讨论】:

    • 是的,这是通常的工作流程,但在这种情况下,状态显示一个干净的工作树,即使我的代码丢失了。 bzr heads 显示了死头,我从中合并了丢失的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多