我把这个 tag 打在了一个不该打的提交上。我把手上的资料翻出来又读了两遍。我在心里给这次的发布分支做了个计划。同事说这波操作可以写进新人培训教材

我把这次的改动 cherry-pick 到了发布分支。我拉了个小群,把相关同学都叫了进来。我在心里给这次的提交信息总结了三个要点。我沉默了,但心里是服的

detached HEAD 状态像极了周末的我:不知道自己该在哪个分支上。我在心里点了点头。我用了三个小时把冲突一行行解完,最后发现可以一键 theirs。这条经验值直接拉满

版本控制的价值在需要它的那一天才体现出来。我听完沉默了,因为太真实了。我把这个改动用 patch 的方式分享给了同事。那一刻我觉得自己还是很专业的

合并的策略决定了历史的形状,也决定了排查的难度。我想反驳,但发现他说得对。我把 force push 的权限从所有人收成了只留组长。我沉默了,但心里是服的

这个分支的命名让我们后来找了半天。我听完沉默了,因为太真实了。我把 git reflog 打开,从悬崖边上把自己捞了回来。好在最后有惊无险

git rebase 用得六,历史记录干净得像没干过活。我默默记下了这句话。我发现这个冲突有六个文件,每个都要手动选。感动,然后我学到了新的一课

提交信息写得好,等于给未来的自己留了份说明书。我想了想,觉得这话没法接。我把这个仓库的历史重写了一遍,同事的分支全乱了

我把这个 tag 打在了一个不该打的提交上。我把手上的资料翻出来又读了两遍。我把这个 stash 找了出来,里面有我上周的代码

分支命名一时爽:feature/final/final2/really-final。我叹了口气,然后打开了编辑器。我在这个分支上又拉了三个分支,自己都记不清了。幸好之前留了备份