因为有两台电脑的关系,很多东西都需要同步,一般文件比较小的会用Onedrive
,文件比较大的比如Hexo会选择用GitHub
(主要贫穷的我只有5G的免费空间)。
相比于其它普通文件夹直接push就可以同步,这个就稍微麻烦一点,因为整个文件夹里有多个含有git的文件夹。
而在第一次直接把跟目录push上去以后,甚至遇到了这个网站yueyue200830.github.io
的github全部被覆盖。
当时整个人内心都十分崩溃。。。
解决方法之概念
首先,我们需要了解一下hexo是如何push到github上的
在根目录寻找一圈后,会发现有一个.deploy_git
的文件夹,打开发现和github上面的文件完全一样。
没错了,hexo就是直接编译在这个文件夹生成文件,然后push到github上面。
然而,不要高兴太早,如果单纯的push为什么换电脑是覆盖而不是有任何的conflict信息呢?
在.deploy_git
文件夹在打开git bash
,输入git remote -v
,发现竟然什么也没有???
介于自己完全不熟练git
命令,打开了外部有同步的文件夹同样输入git remote -v
,是会得到以下显示的
虽然不清楚发生了什么(对不起,我就是一个git小白)。。但是可以知道我们git仓库没有github上面的信息
也就是每次hexo在deploy的时候,是直接把整个仓库替换上去的(好粗暴呀。。)
而再去看一下整个项目的github,发面默认的gitignore里把.deploy_git
添加上了。
也就是说同步的时候根本没有任何之前发布的信息,所以当换了一台电脑的时候就会遇到如此崩溃的事情了。
解决方法之实际操作
既然.deploy_git
和项目各会同步在我的github上,那么与其取消ignore,不如在.deploy_git
上添加远程仓库,每次更新前做一个同步。
在.deploy_git
文件夹的终端下输入以下内容,让其连接到github仓库(注意在最后加上.git
)
1 | $ git remote add origin https://github.com/yueyue200830/yueyue200830.github.io.git |
这个时候,我们再输入git remote -v
,可以看到有信息了
再把remote和本地的进行一次同步:(应该用pull也可以)
1 | $ git push origin master |
这样,我们就在本地同步与github同步成功了,只需要再另一台电脑上也进行以下同步配置,之后每次换电脑的时候只需要两个文件夹各同步一下就可以啦。