您为什么要关心 BitBucket 服务器上工作目录中的内容?只要您推送,更改就会在存储库中并在 BitBucket 页面上可见。
编辑:好的,我将编辑这个作为有用的答案。
假设您克隆了我的一个存储库,例如 BitBucket 上的 django-hoptoad。您将在本地计算机上有一个名为 django-hoptoad 的文件夹,其内容如下所示:
django-hoptoad/
|
+-- .hg/
|
+-- ... my code and other folders
关于存储库本身的所有数据都存储在.hg/ 文件夹中。这就是 Mercurial 保存有关哪些文件在哪些变更集中进行了更改以及许多其他内容的数据的地方。
你可以这样想(虽然它过于简单化了):
django-hoptoad/
|
+-- .hg/
| |
| +-- data about changeset 1
| +-- data about changeset 2
|
+-- ... my code and other folders as they appear in changeset 2
当您运行 hg pull 并且不更新时,您会将任何新的变更集拉入存储库:
django-hoptoad/
|
+-- .hg/
| |
| +-- data about changeset 1
| +-- data about changeset 2
| +-- data about changeset 3 (NEW)
| +-- data about changeset 4 (NEW)
|
+-- ... my code and other folders as they appear in changeset 2
如果您不更新,... my code and other folders 仍将等同于 changeset 2 中的任何内容,但其他变更集仍在存储库中。
当您运行 hg update 时,Mercurial 会将 ... my code and other folders 更新为最新变更集的内容。
django-hoptoad/
|
+-- .hg/
| |
| +-- data about changeset 1
| +-- data about changeset 2
| +-- data about changeset 3
| +-- data about changeset 4
|
+-- ... my code and other folders as they appear in changeset 4
真的,这意味着... my code and other folders 中的内容不必与存储库中的内容相匹配。您可以删除它,所有变更集仍将在存储库中:
django-hoptoad/
|
+-- .hg/
|
+-- data about changeset 1
+-- data about changeset 2
+-- data about changeset 3
+-- data about changeset 4
如果您现在提交,它会创建一个基本上说“无文件”的新变更集。不过,您不必承诺。人们仍然可以向您推送和拉取信息,因为存储库仍然包含有关变更集的所有数据。
这几乎肯定是 BitBucket 正在做的事情。你永远不会登录到 BitBucket 的服务器,编辑你的代码并在那里提交——你只会推送/拉取/克隆。这意味着 ... my code and other folders 将永远不会被实际使用,所以我想 Jesper 已将其设置为删除它以节省磁盘空间。
由于hg update只是真正影响工作目录,而BitBucket上的工作目录从来没有被使用过,所以你推送到BitBucket后不需要运行hg update。