如何git存储库外的文件夹?

时间:2014-11-15 23:55:58

标签: git ln

我有一个git存储库,其位置为~/a

与此同时,我有一些来自~/b/content/data/的内容,这些内容将由另一个应用程序更新。

出于备份目的,我想将~/b/content/data/的内容添加到git ~/a而不移动该文件夹。当然,也没有手动复制。

我能这样做吗?是通过ln吗?

3 个答案:

答案 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