git:如何将外部目录添加到存储库?
我想将外部目录添加到现有的存储库。
外部目录:/ home / some /目录
工作目录:/htdocs/.git
如果我从/ htdocs目录中尝试以下命令:
git add / home / some /目录
我得到一个错误:致命的:'/ home / some /目录'是外部存储库
如果我需要这样做,我通常会将该外部文件或目录移动到我的git仓库中,并将其原始位置符号链接到新位置。
mv /home/some/directory /htdocs/directory ln -s /htdocs/directory /home/some/ git add ./directory
当我正在为一个应用程序开发插件时,我使用这种技术,我想保留在版本控制下,但必须存储在特定的位置。
我有同样的错误…谷歌search死亡…没有太多出来。
基督徒的答案奏效了:
git --work-tree=/ add /home/some/directory
但是“工作树”让我走了。 我grep'd所有的Git文件,并提出了core.worktree
。
我用了
git config --global core.worktree /
瞧! 我现在可以从系统中的任何目录添加。 我不知道是否会导致其他地方的问题,但我会尽力去更新。
git --work-tree=/ add /home/some/directory
有一个非常简单的解决scheme。
假设你是Git-repo,它在/ var / data / my-app中,并且你想添加/ var / data / public /到那个回购。 您不能使用“添加”,因为Git不会在回购的根目录之外添加资源。 所以..
解:
-
将/ var / data / public /目录移动到您的Git-repo根(/ var / data / my-app)中。
-
在/ var / data / public里创build一个sym-link(符号链接)到/ var / data / my-app / public文件夹,使用:
ln -s source_file_or_directory virtual_file_or_directory
然后,使用git add
以正常的方式添加移动的文件或目录到Git。 您的Git源代码控件现在正在跟踪所需的文件/文件夹,并且外部目录中的sym-link可以确保文件/文件夹可以被其他人访问!
如果你想添加到你的回购代码不是太大,你也可以自动将它复制到你的回购每次你推。
在我的例子中,我需要一个R文件,我经常修改一个R文件,在几个版本中,我写了一个shell脚本:
#!/usr/bin/env bash cp -r /some/directory/file.R . git add . git commit -m "add" git push
…我运行这个脚本是为了推动所有的变化,包括/ some /目录中的变化。
或者你可以使用子模块,如果你想跨越不同的git仓库工作(没有这样的工作)。 试试'man git-submodule'。
向存储库中的目录添加一个符号链接。 然后,添加相同的。
ln -s /home/some/directory/ git add directory