从文件树中删除git-annex存储库

sff*_*ffc 5 linux git symlink git-annex

我昨天尝试安装git-annex来备份我的文件.我git annex add .在我的存储库树的根目录中运行,然后运行a git commit.到目前为止一切都很好.

我不知道git-annex正在做的是将我的整个文件树变成一大堆符号链接.现在我整个树中的每个文件都已符号链接.git/annex/objects!这搞乱了我的应用程序,这取决于文件不是符号链接.

我的问题是,如何摆脱git-annex并将我的文件系统恢复到原始状态?对于一个正常的git repo,我可以做rm -r .git,但我担心这不会在git-annex中完成.提前致谢.

sff*_*ffc 5

好吧,所以我偶然发现了git-annex的一些文档,他们给出了两个命令来实现我想做的事情:

unannex [路径...]

使用它来撤消意外的git annex add命令.您可以使用git annex unannex在任何时候将内容移出附件,即使您已经提交了内容.如果您故意附加文件并且不再需要其内容,那么这不是您应该使用的命令.在这种情况下,你应该使用git annex drop,你也可以git rm文件.

UNINIT

用它来停止使用git附件.它将取消存储库中的每个文件,并删除所有git-annex的其他数据,留下一个git存储库以及之前附加的文件.

我开始跑步git annex uninit,但我的上帝很慢."unannex"只花了大约5分钟就完成了一个文件.我的文件系统树大约有200,000个文件,所以这是不可接受的.

我最终做的事实上非常简单并且运作良好.我使用cp -rL标志自动复制文件树的内容并反转复制副本中的所有符号链接.而且速度非常快:整个文件树大约需要30秒.唯一的问题是,该文件的权限并没有从我的原始状态保留下来,所以我需要运行一些chmodchcon命令来修复权限.

第二种方法对我有用,因为我的模式中没有其他符号链接.如果您的架构中的符号链接超出了git-annex创建的符号链接,那么我的小快捷方式可能不是您的正确选择,您应该考虑坚持使用git annex uninit.