如何为假想敌写作留痕
主要思路
因为一直没搞懂为什么草稿或者隐藏的文章还是会被 hugo (或者 vercel?) 编译,要么出现在首页,要么出现在 “上/下一篇” 中 (这个可能和我自己设置的链接逻辑有关),所以不能在存文博客的 main branch 来记录每一次修改。如果直接单独再开一个库来记录修改过程等有点夸张。我能想到的最佳方式就是日常修改保存在 dev branch,当文章修改到可以发布时,再合并到 main。这样会产生一个问题,我不会一次只修改一篇文章,所以直接简单粗暴合并 branch 还是会导致一开始文章显示混乱的问题。
解决这个问题主要有两个方法:cherry-pick 或从 dev 拷贝文件到 main。
简单来讲就是不要把 “写作过程” 暴露给部署分支 main。
cherry-pick
创建 dev 之后,在 dev 上修改文章,且保证每次 add + commit 只添加一个文件的改动。即:
1 | # dev branch |
这种方法有一个缺点是必须保证每次 commit 都是干净的,都只有一个文件的改动。而在一开始我提到我可能会同时开多篇内容,我不想每次写完之后还要一个一个 commit。
ChatGPT 批注:cherry-pick 的前提是被选中的 commit 必须是“自洽的”,即它的改动可以独立应用而不会依赖其他 commit。最简单的方式是每次 commit 只修改一个文件。
dev 拷贝文件到 main
核心命令:
1 | git checkout main |
这个方法简单粗暴,直接把完成的文件拷贝到 main,本质是告诉 git 只要这个文件现在的版本。绕过了那些 commit 限制,在 dev 的操作就可以随意很多,同时 commit 多个文件的修改也没关系。但有一个问题是这个操作会直接覆盖 main 中的重名文件,所以在覆盖之前要注意。如果 main 分支当前有未提交的修改,需要先 commit 或 stash,否则可能无法执行该操作。