git:如何将外部目录添加到存储库?

46 git add

我想将一个外部目录添加到现有存储库.

外部目录:/ home/some /目录

工作目录:/htdocs/.git

如果我从/ htdocs目录尝试以下命令:

git add/home/some/directory

我收到一个错误:致命:'/ home/some/directory'在存储库外

cse*_*ton 52

如果我需要做类似的事情,我通常会将该外部文件或目录移动到我的git repo中,并将其原始位置符号链接到新的.

mv /home/some/directory /htdocs/directory
ln -s /htdocs/directory /home/some/
git add ./directory
Run Code Online (Sandbox Code Playgroud)

当我为一个应用程序开发插件时,我想使用这种技术,我希望将其保留在版本控制之下但必须存储在特定位置.


Mot*_*awg 15

我有同样的错误......用谷歌搜索死了......没多大出来.

克里斯蒂安的答案奏效:

git --work-tree=/ add /home/some/directory
Run Code Online (Sandbox Code Playgroud)

但后来"工作树"让我走了.我grep'd所有Git文档并提出了core.worktree.

我用了

git config --global core.worktree /
Run Code Online (Sandbox Code Playgroud)

瞧!我现在可以从系统中的任何目录添加.我不知道它是否会导致任何其他地方的问题,但我会尝试更新,因为我继续.

  • 是的,我做了,这就是一个轻微的阅读障碍症对你的影响...你的大脑已经完成了段落,并在你的手指仍在其中间时做了别的事.(这么晚才回复很抱歉) (2认同)
  • 谨慎之后,最好不要使用“/”进行实验,而是在“/home/user”目录中选择一个测试目录。顺便说一下,还可以使用默认值“--local”而不是“--global”来使用本地存储库 (2认同)

小智 13

git --work-tree=/ add /home/some/directory
Run Code Online (Sandbox Code Playgroud)

  • 这解释了一下:http://stackoverflow.com/questions/5283262/what-is-git-work-tree-why-have-i-never-needed-to-set-this-env-var-why-现在虽然我不清楚如果克隆那个回购,会有什么人得到的 (4认同)

Sto*_*tes 8

这有一个非常简单的解决方案.

假设您的Git-repo位于/ var/data/my-app中,并且您希望将/ var/data/public /添加到该repo中.你不能使用'add',因为Git不会在repo的根目录之外添加资源.所以..

解:

  1. 将/ var/data/public /目录移动到Git-repo根目录(/ var/data/my-app).

  2. 使用以下命令在/ var/data/my-app/public文件夹中创建/ var/data/public内的sym-link(符号链接): ln -s source_file_or_directory virtual_file_or_directory

然后,只需使用git add正常方式将移动的文件或目录添加到Git .您的Git源代码控制现在正在跟踪所需的文件/文件夹,外部目录中的sym-link确保文件/文件夹可以被其他任何内容访问!


Ala*_*avi -3

添加指向存储库中目录的符号链接。然后,添加相同的内容。

ln -s /home/some/directory/
git add directory
Run Code Online (Sandbox Code Playgroud)

  • 但这实际上并没有跟踪目标目录中的任何内容。它只是跟踪链接。 (5认同)