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

我昨天尝试安装git-annex来备份我的文件.我跑了git附件添加.在我的存储库树的根目录然后是git提交.到目前为止一切都很好.

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

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

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

unannex [path …]

Use this to undo an accidental git annex add command. You can use git annex unannex to move content out of the annex at any point,even if you’ve already committed it.
This is not the command you should use if you intentionally annexed a file and don’t want its contents any more. In that case you should use git annex drop instead,and you can also git rm the file.

uninit

Use this to stop using git annex. It will unannex every file in the repository,and remove all of git-annex’s other data,leaving you with a git repository plus the previously annexed files.

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

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

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

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...