仅使用Git获取子目录?

3
我正在尝试建立一个现有代码的版本控制系统,选择了Git,但我对此很陌生。
我们有一个包含Git存储库的服务器:MyProject。 现在在这个存储库中,有几个目录,每个目录对应一个工具(可以独立于其他工具使用):MyProject/Tool1,MyProject/Tool2,MyProject/Tool3等。
贡献者是否可以只不拉取整个项目到本地机器上,而只是拉取一个目录(例如Tool1),在这个目录上工作并修改它,然后将其推送到服务器上?
如何实现这一点?
谢谢。

你应该使用分支,为每个工具创建一个分支并在这些分支上工作。然后,当你有一个稳定的版本时,将其合并到主分支(可能命名为development)。当dev上的所有内容都稳定后,再将其合并到主分支master上。这样,每个工作在Tool1上的人都将拥有其他工具的相同代码(这将是从最后一次合并到dev的代码)。-- 请搜索了解分支,并且如果您感兴趣,我很乐意在回答中进行澄清。 - ShellFish
3
如果这些工具实际上是彼此独立的,它们应该是单独的代码库。(Git不像Subversion或Perforce这样的版本控制系统,所有内容都在一个代码库中。) - mipadi
@ShellFish,Git的分支不是用于在单独的工具上工作的好解决方案。Git中的分支是用于处理同一代码的不同版本,而不是完全独立的代码库。mipadi的评论是更好的建议。 - Chris
真实故事,尽管如果OP希望将所有内容保留在一个存储库中,这是最好的解决方案。 - ShellFish
感谢您的评论。我并不真的喜欢“分支解决方案”。首先,因为分支的目的并不是用于那种方式,更重要的是,我肯定是所有贡献者中最“极客”的(这就是为什么我负责设置VCS),我担心处理不同的分支,特别是非常规使用,会对其他贡献者来说过于复杂。 - Romn
显示剩余2条评论
1个回答

2
你可以将Tool1Tool2等项目存储在独立的git仓库中,以便能够独立地进行拉取、修改和推送。
你的顶级MyProject仓库可以是另一个独立的git仓库,这样你就可以使用git submodule add命令将Tool子目录添加为git子模块。这样,你就可以拉取整个MyProject仓库,包括独立的子模块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接