Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以拥有一个跨越多个独立目录的git存储库吗?_Git - Fatal编程技术网

我可以拥有一个跨越多个独立目录的git存储库吗?

我可以拥有一个跨越多个独立目录的git存储库吗?,git,Git,我有一个项目,它在几个不同的目录中包含组件,并且希望将这些文件夹的内容视为单个git存储库 例如,我有一些类似于 A a b 在其他地方 一, 我 二, 并希望将它们合并到一个git存储库中: 回购 A 一, 我可以用git做这个吗?不,你不能。Git旨在跟踪单个目录层次结构的内容。简单的解决方案是将所有这些目录移动到一个公共超级目录中。另一种方法是进行多个回购,然后使用组合。如果您仔细想想,大多数源发行版的结构都是这样的。也就是说,回购布局并不反映部署布局。src中有源

我有一个项目,它在几个不同的目录中包含组件,并且希望将这些文件夹的内容视为单个git存储库

例如,我有一些类似于

  • A
    • a
    • b
在其他地方

  • 一,
    • 二,
并希望将它们合并到一个git存储库中:

  • 回购
    • A
    • 一,

我可以用git做这个吗?

不,你不能。Git旨在跟踪单个目录层次结构的内容。简单的解决方案是将所有这些目录移动到一个公共超级目录中。另一种方法是进行多个回购,然后使用组合。

如果您仔细想想,大多数源发行版的结构都是这样的。也就是说,回购布局并不反映部署布局。
src
中有源代码,最终可能在
build
中编译,而这些人工制品又安装在类似
/usr/bin
的地方。可能有一本手册,由不同的工具链组装,并安装在目标系统的其他地方。可能有一个网站,它通过完全不同的方式部署到不同的目标系统等。为了管理所有这些,有一套构建和部署脚本,其中一些脚本(愚蠢地)并不总是与系统的其余部分一起跟踪

但是,如果您找不到适合特定场景的部署工具,那么除了作为心智模型之外,这些都没有多大帮助

如果您需要构建自己的部署脚本,您可以从相当简单的事情开始。由于您提供的背景有限,听起来您可能不需要比

while read repo path; do
    cd "$path"
    mkdir "$repo"
    cd "$repo"
    git init
    git pull /path/to/repo/"$repo"
done<<____HERE
    A /var/www
    1 /srv
____HERE
读取回购路径时;做
cd“$path”
mkdir“$repo”
cd“$repo”
初始化
git pull/path/to/repo/“$repo”

完成如果“A”和“1”已经有了自己的git存储库,并且如果您想继续使用这些存储库,那么您唯一的选择就是在“repo”中创建一个git存储库,然后添加“A”和“1”作为git子模块


如果您不关心“A”和“1”中现有的git存储库,那么只需在“repo”中创建一个新的git存储库并添加“A”和“1”的所有内容即可。

-1 git很难“设计为跟踪单个目录中的内容”。你可以追踪一棵基本上任意深度的树。@tripleee:我指的是一个目录,我指的是那个目录和它下面的所有东西。将其更改为“目录层次结构”,好吗?关于部署的问题在哪里?git是一个版本控制工具,而不是分发/部署工具。