5

我有一个 git 存储库,位于~/a.

同时,我有一些来自 的东西~/b/content/data/,将由另一个应用程序更新。

出于备份目的,我想将~/b/content/data/'s 的东西添加到 git~/a中,而不移动文件夹。而且,当然,没有手动复制。

我可以这样做吗?是通过ln吗?

4

3 回答 3

3

添加符号链接目录在 git 1.6.1 之前一直有效。现在你有其他选择。

  • 您可以为要存储的单个文件创建硬链接,如果您知道它们或者它们很少。
  • 您可以将实际数据放入存储库并创建~/b/content/data/符号链接。
  • 您可以使用sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY而不是链接。
于 2014-11-16T00:16:57.287 回答
0

更多方法来做到这一点

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
于 2014-11-16T09:39:52.567 回答
0

如果链接~/b/content/data~/a/b,git 将只存储对路径名的引用,而不是实际内容。另一方面,如果您移动~/b/content/data~/a/b并将其链接回~/b/content/data,git 将提交文件。

于 2014-11-16T00:07:06.013 回答