gpt4 book ai didi

version-control - 当磁盘损坏/恢复已将 master-repo 返回到旧状态时如何处理 Mercurial

转载 作者:行者123 更新时间:2023-12-02 00:24:41 25 4
gpt4 key购买 nike

我想知道是否有人可以就如何处理我们的一个磁盘损坏的后果以及如何恢复到旧状态给我建议。这是故事:

我有一些使用 Mercurial 管理的代码。磁盘 A 上有一个“主”存储库,并且磁盘 B 上的一个分支/克隆。时间线看起来像这样

  1. 从主存储库开始。有各种现存的分支/克隆制作新功能的原型(prototype)。
  2. clone master repo on disk A--> disk B 上的另一个新分支
  3. 将更改提交到主仓库,并推送到新分支
  4. A盘损坏
  5. 磁盘A恢复到时间点1的状态。
  6. B盘不受影响

我该怎么办?

选项 1: - 自实际分支以来,分支上几乎没有发生任何事情。所以就吹走 主仓库,并开始使用新分支作为我的新主人。如果我这样做,不会 我在 merge 我的旧克隆(在时间点 0 提到)时遇到问题?

选项 2: - 只需手动在我的主人中进行更改,这些更改已经丢失了我与新分支的差异。即使我这样做了,我将如何继续推送到新分支?

选项 3: - 只需手动在我的主人中进行更改,这些更改已经丢失了我与新分支的差异。然后删除新分支,并克隆一个新分支。

欢迎任何建议干杯扎姆

最佳答案

我知道您说问题已得到解答,但无论如何让我提供一些建议。你问:

Option1: Very little has happened on the branch since the actual branching. So just blow away the master repo, and start using the new branch as my new master. If I do this, won't I have problems merging my old clones (mentioned at timepoint 0) back in?

merge 主存储库的旧克隆不会有任何问题。假设您有主存储库 M 和克隆 XY。假设它们包含这样的变化(时间向右流动):

M: [m1] --- [m2] --- [m3]

X: [m1] --- [x1] --- [x2]

Y: [m1] --- [m2] --- [y1] --- [y2]

所以 XM 的克隆,当只有 [m1] 存在时,YM 的克隆[m2] 后的 MXY 都没有 [m3] - 这个变更集显然是通过以下方式直接提交到 M 存储库中的服务器。

您现在发现带有M 的磁盘出现故障,您从备份中恢复它。备份只有[m1]。现在的世界形势是这样的:

M: [m1]

X: [m1] --- [x1] --- [x2]

Y: [m1] --- [m2] --- [y1] --- [y2]

当您比较整体情况时,您会发现只有变更集 [m3] 缺失:它是任何克隆(XY).

恢复后,您可以将 [m2]Y 推送到 M 以挽救尽可能多的数据。这是用一个简单的

$ hg push -r m2

m2 是有问题的修订号或变更集散列。

所以我的建议是查看整体情况:找到您的克隆并弄清楚您仍然在其中分布了哪些变更集以及缺少哪些变更集。将您需要的内容推送回主存储库,并设置一个更频繁备份的备份方案:-)

另请注意,您只丢失了 [m2],因为它仅存在于单个 克隆中。通常,您将在本地克隆中创建新的变更集,然后将它们推送到主存储库。这样一来,您会自动拥有 master 中所有变更集的副本!这使得丢失变更集变得更加困难,因为人们可以在恢复后将他们的工作推回去。

关于version-control - 当磁盘损坏/恢复已将 master-repo 返回到旧状态时如何处理 Mercurial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9309508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com