一个让人满意的diy(把DIY原则用在日更上)

自从开始看《务实程序员之道》这本书之后,我会开始有意识地思考自己做的那些事情,是不是违反了书中所说的原则。

作者说的那么多原则里,印象最深刻的,就是DIY(don't repeat yourself)原则。

然后,我发现,我每天都在违反这个原则,哈哈哈。

按照我现在的日更方式,我通常会在印象笔记里写初稿,写完了之后,再复制到公众号上,在公众号上整理排版。最后会以公众号的排版为准,同步到其他平台。

在这个过程中,我每天都复制自己两次。从印象笔记到公众号一次,从公众号到其他平台一次。

而且,由于这些不同的软件,内部自带的排版会有一些不兼容,就导致,原本只空一行,变成空两行,原本应该有空行,变成没有空行,都挤在一起。还有比如代码显示的不兼容。等等吧,反正每次还有做多余的调整。

然后,我发现,我完全没有让markdown把我解放出来,我还是在和格式做争斗。

于是,痛定思痛,我决定,以后的文章都在Typora里,用markdown的格式写,写完之后,把导出的html格式的文章再同步到包括公众号在内的各个平台。

这样,我的文章有一个最终版本的存档,还方便统一管理。

印象笔记有一个功能,可能自动同步指定文件夹的文件。

原本,我还打算用这个功能来做云同步的,但是,它有些过于灵敏,让我招架不住,哈哈哈。

因为我开了Typora的自动保存功能(虽然我有按Ctrl S的习惯,但还是加上自动保存更保险些)。所以,基本上,我每打两个字,文件就会保存一次。

然后印象笔记也会同步一次,但它的同步方式是,再创建一条新的笔记,而不是在原来的基础上修改。这会导致,我写一篇1000来字的文章,我能生成上千条笔记,这显然不是我想要的效果。

但是,我还是希望能够云同步,于是,我把眼光放在了专门做版本控制的git上。

没有用github,选择了gitlab,因为我想让我的github纯粹一点,还有另一个原因是,我将来准备在自己的服务器上搭版本控制服务,替换我的SVN服务。

《务实程序员之道》这本书的作者不也说,不要痴迷于一种解决方案。虽然底层都是git,但是换了个壳,也是新鲜的,哈哈哈。

准备GitLab

说干就干。

1.注册账号

2.创建仓库(其实注册完账号,就会让你先建一个仓库的)

一个让人满意的diy(把DIY原则用在日更上)(1)

3.创建SSH key

看下自己用户底下.ssh文件夹里有没有这俩文件

一个让人满意的diy(把DIY原则用在日更上)(2)

没有就生成一个

ssh-keygen-t rsa -C"你的公司或个人邮箱"

把.pub的内容复制到gitlab上

一个让人满意的diy(把DIY原则用在日更上)(3)

3.本地新建空白文件夹(markdown文件夹,当然现在已经不空白了)

一个让人满意的diy(把DIY原则用在日更上)(4)

4.初始化并上传git

readme文件里其实有操作指引,不过我依旧遇到了一些坑,特此记录一下:

一个让人满意的diy(把DIY原则用在日更上)(5)

git init
git remote add origin https://gitlab.com/moqian1/markdown.git
git add .
git commit -m"test"

git branch -M main
git push -uf origin main

推送到远程仓库的时候,报连接超时:

fatal: unable to access 'https://gitlab.com/moqian1/markdown.git/': Failed to connect to gitlab.com port 443: Timed out

然后特地尝试了一遍ssh是否能连通,输入yes后,连接成功,再次执行上面的命令,连接超时的问题就解决了。

ssh-T git@gitlab.com

The authenticity of host 'gitlab.com (172.65.251.78)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? Y
Please type 'yes', 'no' or the fingerprint: YES
Warning: Permanently added 'gitlab.com,172.65.251.78' (ECDSA) to the list of known hosts.
Welcome to GitLab, @moqian95!

继续执行推送命令,还是失败:

git push -uf origin main

remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To https://gitlab.com/moqian1/markdown.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.com/moqian1/markdown.git'

因为他说force强制推送失败,所以我把-uf都去掉了,得到了更详细的提示。

git push origin main
To https://gitlab.com/moqian1/markdown.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://gitlab.com/moqian1/markdown.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

里面提到了 git pull,于是我突然意识到,我的仓库不是一个空的,里面已经有readme这个文件的初始提交了。所以,我需要先拉取一下,同步版本:

git pull -f origin main
From https://gitlab.com/moqian1/markdown
* branch main -> FETCH_HEAD
fatal: refusing to merge unrelated histories

又报错了,对git来说远程仓库和我的本地仓库是两个仓库,我最开始应该直接克隆远程仓库,而不是init一个新仓库。

不过没关系,我们可以通过加一点运行参数,这两仓库的历史合并起来:

git pull origin main --allow-unrelated-histories

于是,再次推送就OK了,支持gitlab版本控制算是弄完了。

因为我开启了自动保存,所以,现在其实并没有一个特别明确的事件或标识来判断什么时候应该提交一个新的版本,这个工作就变成我人工判断处理了。

所以,我特意写了个脚本,同步我的文章,想同步的时候,直接点一下,不用输入命令,方便些:

一个让人满意的diy(把DIY原则用在日更上)(6)

git add .
git commit -m"upload"
git push -uf origin main

至此准备工作,其实就算做完了,剩下的就只有用了。

其实DIY这个原则,不光程序员可以用,可以多想想平时一些类似于复制粘贴的工作,是不是还有其他的处理方式,找到一处,就提高了一点效率。挺好的。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页