假设我有一个带有 2 个分支的 git 存储库:
- 1.0-集成
- 2.0-集成
我必须在两个分支中工作,因为我们维护我们产品的 2 个版本。
同时,我在其他项目中使用该产品,例如,我希望在我的 IDE 中提供可用于完成的源代码。
你知道在我的文件系统的某个地方创建一个 1.0_shortcut 目录的方法(我在 linux 上,并且符号链接可用)总是指 1.0-integration 分支,另一个 2.0_shortcut dir 指的是 2.0-integration 分支,无论我的主仓库中的已签出分支如何?
注意:我考虑过使用
git-new-workdir
,但文件不会自动同步(当我在我的主仓库上的分支 1.0-integration 上提交一个文件时,除非我在 1.0_shortcut 目录中这样做,否则该文件在 1.0_shortcut 目录中不可用git reset --hard
)git clone --shared
,但文件不会自动同步(当我在我的主仓库上的分支 1.0-integration 上提交一个文件时,除非我在 1.0_shortcut 目录中这样做,否则该文件在 1.0_shortcut 目录中不可用git fetch origin && git checkout origin/1.0-integration
)
经过更多探索,并在@Michael 的帮助下,我认为这没有什么魔力……可接受的解决方案(根据我自己的需要,其他一些解决方案可能满足您的需要)是:
- 通过主要分支(1.0*、2.0*、...)获得一个工作目录
git-new-workdir
- 优点:
- 设置简单
- 在存储方面高效(只有一个用于 blob 的存储库)
- 轻松访问每个主要版本
- 缺点:
- 你必须认真对待你最终在每个工作目录中签出的内容(没有什么能阻止你在 1.0 工作目录中签出 2.2
- 您不能合理地为每个标签拥有一个工作目录
- 优点:
- 编写一些钩子来创建这些目录
- 优点:
- 完全可定制
- 缺点:
- 使用大量存储空间
- 写得很讲究
- 优点: