背景: 我用黑曜石在我学习时整理我的笔记。它是一个在 Markdown 格式的纯文本文件集合“之上”运行的应用程序,然后以图形方式显示它们之间的链接和连接。我存储在单个文件夹的子文件夹中的文本文件
我想要的是: 由于我正在为即将到来的考试而学习,我每天都会向其中几个文本文件添加信息。最终,我希望有一个自动生成的单个文本文件,其中包含我对每个文件所做的所有更改。一种“每日摘要”,然后我可以通读它来修改当天学到的所有内容。
附加背景: 我已经设置了一个 cron 作业,以便每天凌晨 3:00 使用 rsync 制作我的笔记文件夹的未压缩副本。我认为当我想查看当天结束时进行了哪些修改时,此副本可以作为参考。
一个例子
假设在 5 月 15 日,我做了以下更改This is some new text
在文件 A 中添加了“ ”this is some more textual information
在文件 B 中添加了 - “ ”。
我 5 月 15 日的“每日摘要”如下
"This is some new text"
This is some more textual information"
我的研究: 我知道 diff 和 meld (GUI) 这样的工具非常适合比较文件。 diff 输出格式很难理解。另一方面,Meld 非常容易使用,但它是一个 GUI 应用程序,所以我不知道如何将其输出定向到单个文本文件。
答案1
这实际上是一个版本控制系统你正在那里建造:)
幸运的是,这个问题已经解决了。其中一个工具是git
(它肯定也是该学科中最普及的工具)。
我不知道黑曜石,但假设它甚至还没有集成git
:
一开始,只有一次,您进入包含 .md 文件的目录并将当前目录初始化为 git存储库, 使用
git init .
0.1。 Internet TM称 Obsidian 将其配置放在同一目录中名为 的子目录中
.obsidian
。我们想忽略它,所以我们.gitignore
在它旁边放了一个名为的文本文件,只有一行内容:
.obsidian/
- 我们带来任何新文件(此时,全部你的 Markdown 文件是新的)以引起 git 的注意:(
git add file1.md file2.md …
或者只是git add *.md
) - 我们说,好吧,记下索引中这些添加的文件的当前状态:
git commit -m "This is the initial state"
- 恭喜!我们刚刚进行了第一次 git 提交!运行
git log -p
以查看涉及哪些更改。由于我们从“无”变为“有内容的文件”,因此我们会看到一个日志,其中包含一个以+
添加的行开头的补丁集。 - 现在我们更改一些文件。比如说,我们更改 中的第三行
file3.md
。我们节省,并且git commit -m "End of day commit" file3.md
。 (如果我们改为制作一个新的文件,我们首先需要git add filename.md
它!)。 - 检查
git log -p
输出:你会看到类似的内容
@ 3,3
- old line content
+ new line content
更复杂的更改也是一样的——您会得到一个diff
突出显示提交之间发生的更改的表示。 Git 可以做很多很多事情,但对此进行解释就超出了这个问题的范围。
有很多很多工具可以使 git 日志的处理更加图形化或更美观。tig
例如,我用了很多。
因此,代替凌晨 3 点的 rsync 工作,适当的操作git add *.md; git commit -sm "Automatic end of day commit"
将使跟踪您的更改变得微不足道。出于备份目的,您只需git push
(再次,这太过分了,我只是提到它,因为您说您正在通过复制内容rsync
,我假设这是出于备份目的)。