1、背景
- 作为「只用 Markdown 撰写笔记、文档的程序猿」,在试用了多款 MD编辑器后,最终还是选择了 Typora
- 为了实现笔记的「历史版本」,我在 笔记的根路径,通过
git init/add/commit,进行本地的提交 - 为了实现「云笔记」,便把上述
git 库提交到了GitHub—— 于是我就在想:“如何能快速提交笔记到 Git”?
2、实现
2.1、双击执行 push.command
我编写了如下 shell 脚本,并保存为 push.command 文件,之后即可实现「双击执行该文件」以提交指定路径下的变动
#!/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"
执行效果如下:
2.2、Typora 的自定义导出
偶然间,看到了 Typora 官网的一篇文章,发现其「导出」功能可以执行自定义命令,还给了git commit的示例:
Other Formats Using Custom Commands
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.
上述示例,仅是「提交当前文件」,但通常 我们是想提交所有变更,所以可以改成如下命令:
# 获取当前 git 库的根路径,并将其下的所有变更添加、提交,最后 push 到远端
gr=$(git rev-parse --show-toplevel); git add "$gr"; git commit -m "update by Typora"; git push;
执行效果如下:
| 正在提交 | 提交成功 |
|---|---|