终端里躺着一行从来没敲下去的命令:
git reset --hard HEAD~1
写代码的人都知道它的意思:回到上一个版本,撤销刚才的一切。一行回车,干干净净。
但人生不认这个命令。
git stash
stash 是暂存。代码写到一半,有别的事要处理,先把这一半存起来,想着过一会儿再取出来接着写。
但生活里的 stash,存进去就很少取出来了。
那年想学的竹笛,搁在墙角落了灰。书架上那本翻到第三章的书,书签还是三年前的。手机备忘录里记了一句"改天约饭",那个改天一直没来。
不是忘了。是 stash 堆得太深,你不敢一条一条 pop 出来看。
git log --oneline
这个命令用来看历史记录——谁在什么时候做了什么改动,一行一条,按时间倒序。
回头看自己这十年,也是一行一行的:
去了那座城市
换了第一份工作
奶奶走的那天
搬家
开始失眠
每一条都短得不近人情。
git branch
branch 是分支。你可以在主干之外开一条岔路,试试看,不行再回来。
二十一岁那年你没去北京。二十五岁你没说出那句话。三十岁你没回那趟老家。
每一个"没选"都生出一条看不见的分支。那个去了北京的你、说了那句话的你、回了老家的你——他在另一条 branch 上,偶尔也会回头想:如果我当时做了另一个决定,现在会是谁在写这段字。
两条分支永远不会 merge。但你们都还活着。
.gitignore
项目里有些文件不想被版本管理——临时文件、本地配置、不想让别人看到的东西。把它们写进 .gitignore,系统就会假装它们不存在。
人也有一份 .gitignore。
有些记忆你写进去了,以为忽略得够久,就等于没有。但它们还在目录深处。某个睡不着的凌晨,被一行 grep 翻出来,原封不动,连时间戳都没改。
忽略文件最大的谎言,是你以为它真的能忽略。
人生没有 git reset。没有上一个版本可以回退,没有暂存区可以翻找,没有分支可以重选。
但你还在写着。
一行一行,往更远的地方 commit。