2

我的理解是,当我执行时git annex add somefile,它会为该文件创建一个符号链接并将其放在.git/annex/objects文件夹中。然后,当我在某个不同的位置初始化git-annex并将其与前一个位置同步时,它会下载一个损坏的符号链接,除非我这样做git annex sync --content,这会生成文件的完整副本。

我需要在一个位置保存大文件,比如说在 USB 驱动器上,以及多个使用大文件的 git 存储库。所以我只想在那些 git repos 中拥有指向大文件的符号链接。如何执行syncsogit-annex下载指向单个位置文件的有效符号链接?

4

1 回答 1

0

有两种方法可以做到这一点。

首先是使用硬链接,其次是使用符号链接。如果您的所有文件都将位于同一个文件系统/卷/分区中,我建议使用硬链接,否则好的 ol'cp --link只会复制整个内容。

  • 使用硬链接:

git clone --shared main_repo/ new_repo/

git-annex 作者自己解释

  • 使用符号链接:

在 main_repo 上: git worktree add -b branch_name path_to_new_repo/

由于git-worktree使用指针文件(git-annex 用符号链接替换),这将适用于不同的文件系统。对“不同存储库”的更改将存储在不同的分支中。如果您希望它们全部保持同步,请将它们与标准 git 命令(如git merge. 或者您只能git rebase master频繁地更改主分支和不同的分支。

于 2020-08-21T17:23:23.840 回答