1、背景

  • 作为「只用 Markdown 撰写笔记、文档的程序猿」,在试用了多款 MD编辑器后,最终还是选择了 Typora
  • 为了实现笔记的「历史版本」,我在 笔记的根路径,通过git init/add/commit,进行本地的提交
  • 为了实现「云笔记」,便把上述 git 库 提交到了 GitHub —— 于是我就在想:“如何能快速提交笔记到 Git”?

2、实现

2.1、双击执行 push.command

我编写了如下 shell 脚本,并保存为 push.command 文件,之后即可实现「双击执行该文件」以提交指定路径下的变动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env sh 

# 提交当前所有变更

# =========================================== GLOBAL FUNCTIONS ===========================================
echoInfo() { echo "\033[1;36m$@\033[0m"; } # info 重要,输出信息:用来反馈系统的当前状态给最终用户的;
echoSuccess() { echo "\033[1;32m$@\033[0m"; } # success 成功,输出信息:用来反馈系统的当前状态给最终用户的;
echoWarn() { echo "\033[1;33m$@\033[0m"; } # warn, 可修复,系统可继续运行下去;
echoError() { echo "\033[1;31m$@\033[0m"; } # error, 可修复性,但无法确定系统会正常的工作下去;
echoFatal() { echo "\033[5;31m$@\033[0m"; } # fatal, 相当严重,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话后果严重。


# =========================================== MAIN ===========================================
script_file="$(dirname $0)"
notebook_dir="$(dirname $script_file)"
cd "$notebook_dir" && echoInfo "\n根路径:$(pwd)"

echoInfo "\n待提交变更:"
git status

echoInfo "\n开始提交变更:"
git add .
git commit -m "Update by $(basename "$0") ."
git push

echoSuccess "\n已提交所有变更!"
echoSuccess "\n详见GitHub: https://github.com/AndyM129/Notebook\n"

执行效果如下:

图片.png

2.2、Typora 的自定义导出

偶然间,看到了 Typora 官网的一篇文章,发现其「导出」功能可以执行自定义命令,还给了git commit的示例:

Other Formats Using Custom Commands

图片.png

You can also add export options based on command line commands. You will need to config:

Command

The command you want to trigger for this export option. For example, to submit current file to git server, you can use git add "${currentPath}" && git commit -m "save" && git push.

上述示例,仅是「提交当前文件」,但通常 我们是想提交所有变更,所以可以改成如下命令:

1
2
# 获取当前 git 库的根路径,并将其下的所有变更添加、提交,最后 push 到远端
gr=$(git rev-parse --show-toplevel); git add "$gr"; git commit -m "update by Typora"; git push;

执行效果如下:

正在提交提交成功
图片.png图片.png