版本控制最怕的不是冲突,是有人强行推。我想了想,觉得这话没法接。我把这条历史记录往前翻,找到了引入问题的提交。同事说这波操作可以写进新人培训教材

同事的 commit 信息全是 update,我怀疑他提交了整个宇宙。我停了一下,然后继续手上的活。我打开 stash 列表,发现里面有十七个没 pop 的记录。这大概就是程序员的人生吧

误操作把密码提交进了仓库,全组人半夜爬起来轮换密钥。我盯着屏幕沉默了十分钟。我在心里给这次的 rebase 做好了冲突准备。连茶水间都安静了

git log 拉到底,发现项目的起点是一个叫 init 的提交,里面只有一句"开始吧"。我先给自己泡了杯茶,做好了打持久战的准备。我在心里给这次的版本管理总结了一句,还算规范。同事说这波操作可以写进新人培训教材

这个提交的时间戳是错的,说明他的机器时区不对。我笑了笑,决定不解释。我把这条记录的 blame 打了出来,找到了原作者。连茶水间都安静了

我在提交前会看一眼改动列表,这个习惯救过我几次。我把相关的记录都翻了出来做对照。我发现这个提交信息写着「fix」,没说 fix 了什么。连茶水间都安静了

commit 信息写的是"修复若干问题",半年后没人知道修的是什么问题。我把它记在心里,没跟任何人说。我把分支全部清理了一遍,删掉了三十个没人认领的。这条经验值直接拉满

这个分支已经落后主线一百多个提交了。我忽然觉得,这可能就是这一行的常态。我在心里给这次合并的冲突数估了个数,低估了。我把这条经验写进了团队 wiki

回滚代码的正确姿势是 revert,错误姿势是删库,我们组两种都见过。我发现自己居然没法反驳。我发现这个提交把一个不该动的文件也带上了。这条经验值直接拉满

我把这条历史往前翻,找到了引入问题的那个提交。这套流程走下来,我从头到尾又确认了一遍。我看了下这条记录的提交人,决定不去追究了。从此我多了一条团队规约