1

我在https://bitbucket.org/上创建了一个存储库,并使用 TortoiseHg 将其克隆到我本地计算机的文件夹中。我可以添加文件提交文件,但我发现它们永远不会在 Bitbucket 的服务器上更新。通过一些摆弄,我发现有这个同步选项。我不明白的是,为什么我必须按下同步。如果我打算提交,那么它应该提交。

它存储在哪里如果它没有立即与删除服务器同步。

注意: 我正在尝试 TortoiseHg 和 Mercurial,同时对 SubVersion 有丰富的经验。

4

2 回答 2

6

当您提交时,您将提交到本地存储库 - 即到.hg项目根目录中的目录。要与远程存储库同步,您需要显式推送您的更改。这就是 DVCS 的工作方式——它与 SVN 的模型不同。

于 2011-06-06T12:02:00.673 回答
4

分布式版本控制系统的一个关键特性是您可以进行本地提交。这意味着当你按下“提交”时,新的提交不会离开你的机器,它只是存储在本地。

这有一些直接的后果:

  • 您可以在离线时工作,例如在火车或飞机上

  • 提交非常快:在 Mercurial 中,创建涉及n 个文件(通常称为变更集)的新提交意味着将几个字节附加到n + 2 个文件。

  • 您可以改变主意:由于您没有与任何人共享新的变更集,您可以毫无问题地从本地计算机中删除它

它也有一些间接的后果:

  • 因为提交速度很快,人们往往会做出更多的提交。提交通常比您在集中式系统中看到的更细粒度,这使得查看更改更容易

  • 因为提交是本地的,所以人们经常会做并发工作。当您和我都基于相同的初始版本进行一个或多个提交时,就会发生这种情况:

                    [a] --- [b] --- [c] <-- you
                   /
    ... [x] --- [y]
                   \
                    [r] --- [s]         <-- me
    

    自从我们都基于 changeset 开始工作以来,历史就有效地分叉了y。为此,我们必须能够合并两个分叉。因为这种情况经常发生,您会发现 Mercurial 对合并有非常强大的支持。

因此,通过将提交的创建与提交的发布分离,您可以获得一些显着的优势。

于 2011-06-07T07:19:56.373 回答