diff options
| -rw-r--r-- | content/essays/git-with-trolley.md | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/content/essays/git-with-trolley.md b/content/essays/git-with-trolley.md new file mode 100644 index 00000000..1434b458 --- /dev/null +++ b/content/essays/git-with-trolley.md @@ -0,0 +1,21 @@ ++++ +title = '如何用电车难题理解 Git' +subtitle = '' +slug = 'git-with-trolley' +tags = [] +categories = '' +date = 2026-02-10T00:13:52+08:00 +draft = true +toc = true ++++ + +你是一个疯狂的哲学家,你意识到反思、设想和解构已经无法满足你对人类道德的求知欲了,于是你决定开始实验。就这样,你找到了一些铁轨、一辆火车、一根拉杆和一些必要的机关,哦对,还有绳子,现在就差受害者了。<!--more--> + +不过,你可不想过于随意地进行这场伟大的实验,有幸参与实验的人也是需要层层筛选的。总而言之,你找到了一群愿意或不愿意的受试者,让我们把他们称作 A 组。尽管你在选取受试者时也是带有目的的,但在正式开始实验之前,理应再做一次筛选。于是,你把 A 组中的一部分人绑上了铁轨,让另一部分人直接离开了,我们把这一部分有幸被绑上铁轨的人称作 B 组。 + +读者可能猜到了,一开始进入这场思想实验的 A 组就是 Git 的工作目录(work tree),B 组自然代表从工作目录中挑选出来的布置区(staging area),那些被哲学家打发走的人就是被丢弃(discard)或者说复原(restore)的工作。由此就不难理解,当哲学家命令火车向前行驶,压过铁轨(staging area)上被绑好的人们之后,他就承认(commit)了这些人应当进入实验中,也犯下(commit)了杀人罪,或者,我们可以说:他提交(commit)了他的工作。 + +显然,在这篇文章中,我们把对代码的改动抽象为「工作」,而在电车难题的比喻中,我们用人来代指「工作」。 + + + |
