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中完成.提前致谢.
好吧,所以我偶然发现了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秒.唯一的问题是,该文件的权限并没有从我的原始状态保留下来,所以我需要运行一些chmod
和chcon
命令来修复权限.
第二种方法对我有用,因为我的模式中没有其他符号链接.如果您的架构中的符号链接超出了git-annex创建的符号链接,那么我的小快捷方式可能不是您的正确选择,您应该考虑坚持使用git annex uninit
.