我有一个 git 存储库,位于~/a
.
同时,我有一些来自 的东西~/b/content/data/
,将由另一个应用程序更新。
出于备份目的,我想将~/b/content/data/
's 的东西添加到 git~/a
中,而不移动文件夹。而且,当然,没有手动复制。
我可以这样做吗?是通过ln
吗?
添加符号链接目录在 git 1.6.1 之前一直有效。现在你有其他选择。
~/b/content/data/
符号链接。sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY
而不是链接。更多方法来做到这一点
git --work-tree=~/b/content/data add .
将一次性使用(您指定的路径名是相对于给定工作树的)
检查您指定的工作树中是否有任何嵌套的存储库(find that/path -name .git
),这些也称为子模块,并且将添加到您自己的存储库的只是那里当前签出的提交 ID。
请注意,像 add 这样的检出总是到当前工作树,所以如果你执行上面的命令,然后提交,然后在没有覆盖的情况下检出,你会得到~/b/content/data
'innards check out under ~/a
。
如果要为存储库设置持久工作树,
git config core.worktree ~/b/content/data
或作为相对路径(相对于 .git 目录)
git config core.worktree ../../b/content/data # ~/a/.git/.. is ~/a
如果链接~/b/content/data
到~/a/b
,git 将只存储对路径名的引用,而不是实际内容。另一方面,如果您移动~/b/content/data
到~/a/b
并将其链接回~/b/content/data
,git 将提交文件。