1

我目前使用 SVN 来管理 jboss 服务器配置,并且我需要在每个工作副本中拥有相同子目录的多个副本,但要引用服务器上的相同目录,这样当我更改某些文件时,每个副本都会得到更新。

例子:

  • /server/bin(共享)
  • /server/node-01(存储库 /server/node 的副本)
  • /server/node-02(存储库 /server/node 的副本)

是否可以使用 git 实现相同的目标?我在(许多)类似的问题中找不到明确的答案。

4

1 回答 1

2

我所知道的最好的近似值是 git-submodule [1]。

您可以定义子存储库并让“父”存储库在概念上包含一个散列,指定每个子存储库应具有的确切修订版。

当您的 HEAD 在子存储库中移动时,“git status”和“git diff”将报告为父存储库中的哈希更改。

不幸的是,git 子模块有点笨重:

  • 当您拉入父仓库时,它不会自动更新子仓库。相反,子存储库看起来好像您已经进行了本地更改(将它们的新位置恢复到原来的位置)。

  • 在拉/合并父仓库后,您每次都必须显式调用“git submodule update”(当然也可以编写脚本)。

这也意味着在存在子模块的情况下,父级上的“git rebase”和其他操作无法正常工作。但是您确实可以对此处的行为进行细粒度控制,因此没有什么是您无法解决的。

[1] http://kernel.org/pub/software/scm/git/docs/git-submodule.html

于 2011-07-13T15:38:10.373 回答