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