书签
一个你想回去的地方:bug 住的那一行、改名改到一半的函数、等重构落地就要删掉的东西。 在文件视图里右键某一行,选 给这一行加书签,它就出现在侧边栏,点一下就回去了。

加了书签的行会在行号旁带一个标记;把鼠标放在任意一行上,会出现一个可以点的淡色 标记 —— 右键菜单是给你已经知道有这个功能的时候用的。
书签只属于这台机器和这个仓库。什么都不会写进仓库里,所以既提交不了、推送不了, 别人也看不到 —— 和待办完全一样。
行会移动,问题全在这里。
只要有人在上面插一行,cart.ts:42 就烂掉了;而一个悄悄打开错误行的书签,比没有
书签更糟。所以除了行号,还会存下这一行的文本,打开时重新定位:
- 记住的那一行,如果它还是那段文本;
- 否则找文本相同的最近一行 —— 取最近的,这样在整个文件里重复出现的行会落到离 原位最近的那一份上;
- 再否则找忽略空白后相同的最近一行,这能扛过重新缩进或格式化;
- 都没有,就直说这一行已经没了,并在它原来的位置打开,而不是瞎猜。
行移动之后书签会自愈:新的行号被存下来,下次打开就从它真正的位置开始。可以在右键 菜单里加备注 —— 没有备注时,标签就是这一行自己的文本。
限制
- 书签指向工作区,不是某个提交。它跟着你的编辑走,不会沿着历史往回走。
- 被重写的文件会丢掉书签。 如果前后几百行里既找不到原文本,也找不到它去掉 空白后的样子,就没有诚实的落点了。
- 重命名文件会弄坏它的书签。 键是路径;git 能在 diff 里看出重命名,但书签不是 diff 的一部分。
- 空行没有文本可匹配,它的书签只能靠行号。