我已经查看了似乎解决这个问题的 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 的概念是为一个 Git 存储库创建多个副本。
您应该将这些项目放到不同的 Git 存储库中。但是,您可能会通过使用 Git 子模块来实现您的想法。您可以将两个目录都设置为 Git 存储库,也可以将库项目作为 TNS 项目下的子模块。但是,如果您仅在本地工作(如您的问题所暗示的那样),则可能会引起更多混乱然后受益。更新、合并和管理子模块有时会变得复杂,尤其是在所有本地存储库之间。
如果您想尝试一下,只需将两个目录初始化为 Git 存储库,然后在以下位置使用以下命令C:\dev\Delphi Projects\TNS
:
git submodule add "..\..\Delphi Library" lib
这会将库项目复制到 TNS 项目内的 lib 文件夹下。每当您在C:\dev\Delphi Library
文件夹中编辑库项目时,请使用git submodule update
来自 TNS 项目文件夹的更改,以便将更改传输到 TNS。
如果您尝试修改子模块文件夹 lib,git 将阻止您将更改推送到C:\dev\Delphi Library
文件夹,因为它包含一个工作副本(不是一个贫瘠的存储库)。
你可以试试这个解决方案,但你会被警告,当你开始有分支,开始做 rebase 等时,事情可能会变得更加复杂。至少考虑设置贫瘠的远程存储库,以便更容易推送更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句