我想将一个外部目录添加到现有的代码库中。
外部目录: /home/some/directory
工作目录: /htdocs/.git
如果我在/htdocs目录下执行以下命令:
git add /home/some/directory
会出现错误提示: fatal: '/home/some/directory' is outside repository
我想将一个外部目录添加到现有的代码库中。
外部目录: /home/some/directory
工作目录: /htdocs/.git
如果我在/htdocs目录下执行以下命令:
git add /home/some/directory
会出现错误提示: fatal: '/home/some/directory' is outside repository
如果我需要这样做的话,通常会将外部文件或目录移动到我的 git 存储库中,并使用符号链接将其原始位置链接到新位置。
mv /home/some/directory /htdocs/directory
ln -s /htdocs/directory /home/some/
git add ./directory
在我开发一个插件,并想将其存储在特定位置且保持版本控制的应用程序中时,我使用这种技术。
我遇到了同样的错误...搜索了很多,但没有得到太多有用的信息。
Christian的回答解决了问题:
git --work-tree=/ add /home/some/directory
但是"工作树"让我有些困惑。我在所有的 Git 文档中使用 grep 命令,并找到了 core.worktree
。
我使用了
git config --global core.worktree /
完成了!现在我可以从任何目录添加了。不知道是否会在其他地方导致问题,但我会随时更新。
git add *
:P - Nishantgit --work-tree=/ add /home/some/directory
的评论。 - XavierStuvwgit --work-tree=/ add /home/some/directory
git --work-tree=/ add /storage/sdcard1
并不能起作用。 - Khurshid Alam这个问题有一个非常简单的解决方案。
假设你的Git仓库在 /var/data/my-app 中,你想要将 /var/data/public/ 添加到该仓库中。因为Git不会添加根目录之外的资源,所以您无法使用 'add' 命令来添加资源。
解决方案:
将 /var/data/public/ 目录移动到 Git 仓库根目录(/var/data/my-app)中。
在 /var/data/public 目录下创建一个符号链接(symbolic link),链接到 /var/data/my-app/public 文件夹,使用命令: ln -s 源文件或目录 虚拟文件或目录
然后,只需按照正常方式使用 git add
命令将移动后的文件或目录添加到 Git 中。现在,您的 Git 源代码控制正在跟踪所需的文件/文件夹,而您在外部目录中的符号链接确保该文件/文件夹对于其他任何东西都是可访问的!
如果你想要添加到你的代码库中的代码不是太大,你也可以在每次推送之前自动将它复制到你的代码库中。
例如,我需要一个R文件,在多个代码库中经常进行修改,因此我编写了一个小shell脚本:
#!/usr/bin/env bash
cp -r /some/directory/file.R .
git add .
git commit -m "add"
git push
我运行了这个脚本来推送所有更改,包括/some/directory中的更改。
import() {
cp -fr /home/some/directory /htdocs/
}
export() {
cp -fr /htdocs/directory /home/some/
}
那么你就会在你的代码库中有一个文件副本,你可以使用 git add
命令添加它。
.
├── 2A94M5J1Z
│ └── note.json
├── 2G2U2ZR1T
│ └── note.json
├── conf
│ ├── shiro.ini
│ ├── zeppelin-env.sh
│ └── zeppelin-site.xml
└── README.md
如果你想在不同的git仓库之间工作,可以使用子模块(ln不能以这种方式工作)。尝试使用“man git-submodule”命令。
如果您使用Windows Git Bash终端,请使用此代码移动目录并创建源的符号链接
git mv <source_directory> <destination_directory>
git ln -s <source_directory>
在代码库中添加一个目录的符号链接,然后再添加相同的目录。
ln -s /home/some/directory/
git add directory