我的理解是,当我执行git annex add somefile时,它会为该文件创建一个符号链接,并将其放在.git/annex/objects文件夹中。然后,当我在某个不同的位置初始化git-annex并将其与前一个同步时,它会下载一个断开的符号链接,除非我执行git annex sync --content,这会生成文件的完整副本。
我需要在一个位置有大文件,比如说在USB驱动器上,以及使用大文件的多个git存储库。所以我只想要那些git repos中大文件的符号链接。如何执行sync以便git-annex下载指向单个位置中的文件的有效符号链接?
发布于 2020-08-22 01:23:24
有两种方法可以做到这一点。
首先是使用硬链接,其次是使用符号链接。如果你的所有文件都在同一个文件系统/卷/分区中,我建议使用硬链接,否则好用的cp --link只会复制整个文件。
使用硬链接的
git clone --shared main_repo/ new_repo/
Explained by git-annex author himself
使用符号链接的
在main_repo上:git worktree add -b branch_name path_to_new_repo/
因为git-worktree使用了一个指针文件( git-annex用一个符号链接代替了它),所以它可以跨不同的文件系统工作。对“不同repos”的更改将存储在不同的分支中。如果你想让它们保持同步,就让它们与标准的git命令保持同步,比如git merge。或者,您只能频繁地从不同的分支更改主分支和git rebase master。
https://stackoverflow.com/questions/43482739
复制相似问题