画开 Git 的"删除":它基本没删过你的东西
有人在错误的分支上敲了 git reset hard,三个小时的工作从 git log 里蒸发了。 第一次听到这事,我跟所有人反应一样——完了。后来我把 Git 的对象模型画开看了一眼,才发现这个"完了"根本站不住脚。 Git 极少真的删东西。它九成时间在挪指针。

有人在错误的分支上敲了 git reset hard,三个小时的工作从 git log 里蒸发了。 第一次听到这事,我跟所有人反应一样——完了。后来我把 Git 的对象模型画开看了一眼,才发现这个"完了"根本站不住脚。 Git 极少真的删东西。它九成时间在挪指针。

今天在收尾一个小功能的时候,给上一个 commit 补了两个漏掉的文件,push 直接被拒了。操作就是 git commit amend,报错是老熟人 nonfastforward。
