Git回滚操作

摘要

使用git reset --hard {version}可以将git库中的数据恢复到某一次提交时的状态。另外,建议不要随意复制名为.obsidian的文件夹。

删库的过程

今天为了节省安装插件的过程,于是就将我工作ob库中的.obsidian的文件夹直接复制到一个新建的空的ob库中。但因为我目前开启了ob官方的同步服务,(下面的过程我也不太清楚)所以导致新库自动上传,覆盖了远程的库,所以造成了删库。

恢复的尝试

我目前有三种同步方式共存,分布是坚果云同步、git同步、ob官方同步。
发生删库之后,我首先尝试坚果云进行恢复,进入了web端进行了回撤操作,但是效果不好,可能的原因是文件数太多。
其次,我尝试使用ob的同步服务,但是ob的同步服务没有批量回滚的选项,而我发生更改的文件应该有2000多个,无法一一点击。
最后我尝试使用git服务。在Jackiexiao的帮助下,我使用了git reset --hard {version}成功进行了恢复。

Git恢复的操作

本操作的前提是在发生误删操作前已经开启git服务,相关操作之前已经有介绍了。因为我是每10分钟自动进行一次git的备份操作,所以能轻松定位到删除前的状态。
首先,获得你的版本。可以在你的github网址上,点击commits。(当然也有其他方式,可以在git软件中查询到。)

然后,在新界面中点击复制按钮,就可以获得版本号。

其次,在你的库文件夹在,右键-选择Git bash here。

在命令行中输入
git reset --hard {version}
其中{version}为刚才得到的版本号。如下图

如此就可完成回滚操作。

个人的话

今天的删库操作是因为我自己没有认识到复制.obsidian的文件夹是一个敏感的操作行为,所以将我删库的过程写出来,以作警醒。
此外,可能多种同步方式并存不一定是好事,因为同步方式之间可能相互干扰。
好的文件备份习惯至关重要,选择对的同步软件也很关键。今天群友还推荐了seafile、NAS等同步方式。我个人打算先使用Goodsync来对关键数据进行增量备份,并以不同形式上传到网络,并区分热数据和冷数据分开保存。