如何创建包含多个目录的git存储库?

如何创建包含多个目录的git存储库?,git,Git,我已经看过了stackoverflow的答案,这些答案似乎解决了这个问题,但我对git是新手,我发现在git repo项目分支与文件系统目录分支之间的措辞含糊不清。或者也许我的思路是对的,但不太明白语法 以下是我想做的: 我有两条路径是项目的一部分: C:\dev\Delphi Library C:\dev\Delphi Projects\TNS 这两个路径都有多个子目录需要跟踪。那么一个git存储库是否可以同时跟踪这两个目录分支呢。我认为答案是使用git worktree。如果是这样

我已经看过了stackoverflow的答案,这些答案似乎解决了这个问题,但我对git是新手,我发现在git repo项目分支与文件系统目录分支之间的措辞含糊不清。或者也许我的思路是对的,但不太明白语法

以下是我想做的:

我有两条路径是项目的一部分:

  C:\dev\Delphi Library
  C:\dev\Delphi Projects\TNS
这两个路径都有多个子目录需要跟踪。那么一个git存储库是否可以同时跟踪这两个目录分支呢。我认为答案是使用git worktree。如果是这样的话,我就无法理解语法,我开始怀疑worktree是否真的是这样做的

我所做的是在C:\Delphi Projects\TNS中创建一个新的存储库,将其暂存,然后运行

git worktree add “C:\dev\Delphi Library”
git worktree add “C:/dev/Delphi Library”
git worktree add “\C\dev\Delphi Library”
git worktree add “C/dev/Delphi Library”
git worktree add "..\..\Delphi Library"
git worktree add "../../Delphi Library"
然后同样没有双引号。我通常会遇到以下错误:

fatal: invalid reference: Library
但我也得到了:

fatal: 'Delphi Library' is not a valid branch name.
我是否必须首先在“C:\dev\Delphi Library”中初始化存储库?我应该先提交TNS项目吗?我只是在演戏。甚至可以让一个repo跟踪多个非子(我可以说是“兄弟”)文件夹吗?运行git worktree时是否必须指定分支?-b选项是可选的

请注意,我不想跟踪许多其他C:\dev文件夹,因此在C:\dev中使用git repo不是一个选项


我正在使用git版本2.8.1.Windows.1在Windows XP上尝试这一点。

正如前面指出的,worktree不是您想要的。Worktree概念用于创建一个Git存储库的多个副本

您应该将这些项目放到不同的Git存储库中。但是,您可以通过使用Git子模块来实现您的想法。您可以将这两个目录都设置为Git存储库,并且可以将库项目作为子模块放在TNS项目下。但是,如果你只在本地工作(正如你的问题所暗示的那样),可能会引起更多的混乱,然后从中受益。更新、合并和管理子模块有时会变得复杂,尤其是在所有本地存储库之间

如果您想尝试一下,只需将这两个目录初始化为Git存储库,然后在
C:\dev\Delphi Projects\TNS
中使用以下命令:

git submodule add "..\..\Delphi Library" lib
这将复制TNS项目中lib文件夹下的库项目。每当您在
C:\dev\Delphi library
文件夹中编辑库项目时,请使用TNS项目文件夹中的
git子模块更新
,以便将更改传输到TNS

如果您试图修改子模块文件夹lib,git将阻止您将更改推送到
C:\dev\Delphi Library
文件夹,因为它包含一个工作副本(不是空存储库)


你可以给这个解决方案一个尝试,但是你被警告了,当你开始有分支,开始做升级的时候,事情可能会变得更加复杂。至少考虑建立贫瘠的远程储存库,这样它会更容易推动变化。

不,<代码>工作树< /代码>不是你正在寻找的。在单个存储库中跟踪的所有文件必须位于单个目录的子目录中。如果您只想跟踪这两个文件夹,而不是
dev
中的所有内容,则需要创建一个
Delphi
子文件夹并将存储库放在那里。我不想假装比您更了解您的项目结构,但我只想说,如果您希望将这两个内容放在单独的目录中进行开发,那么,这可能是一个相当好的迹象,表明您希望将它们也放在单独的Git回购协议中。如果这会造成额外的复杂性,我想我不会使用子模块。我会按照大家的建议去做,为TNS和Delphi库建立单独的存储库。非常感谢。