41.5.2 评注相关命令
Git提供了git notes命令对评注进行管理。如果执行git notes list,或者像下面这样不带任何参数进行调用,会显示和上面git ls-tree类似的输出:
$git notes
80b1d249069959ce5d83d52ef7bd0507f774c2b0 6652a0dce6a5067732c00ef0a220810a7230655e
e894f2164e77abf08d95d9bdad4cd51d00b47845 e80aa7481beda65ae00e35afc4bc4b171f9b0ebf
右边的一列是要评注的提交对象,而左边一列是附加在对应提交上的包含评注内容的blob对象。显示附加在某个提交上的评注可以使用git notes show命令。如下:
$git notes show G^0
Bisect test:Good commit,for doc/B.txt does not exist.
注意上面的命令中使用G^0而非G,是因为G是一个里程碑对象,而评注是建立在由里程碑对象所指向的一个提交对象上。
添加评注可以使用下面的git notes add和git notes append子命令:
用法1:git notes add[-f][-F<file>|-m<msg>|(-c|-C)<object>][<object>]
用法2:git notes append[-F<file>|-m<msg>|(-c|-C)<object>][<object>]
用法1是添加评注,而用法2是在已有评注后面追加(修改已有评注)。两者的命令行格式和git commit非常类似,可以用类似写提交说明的方法写提交评注。如果省略最后一个是<object>参数,则意味着向头指针HEAD添加评注。子命令git notes add中的参数-f意味着强制添加,会覆盖对象中已有的评注。
使用git notes copy子命令可以将一个对象的评注拷贝到另外一个对象上。
用法:git notes copy-f
修改评注可以使用下面的git notes edit子命令:
用法:git notes edit[<object>]
删除评注可以使用的git notes remote子命令,而git notes prune则可以清除已经不存在的对象上的评注。用法如下:
用法1:git notes remove[<object>]
用法2:git notes prune[-n|-v]
评注以文件形式保存在特殊的引用中,如果该引用被共享并且同时有多人撰写评注,则可能出现该引用的合并冲突。可以用git notes merge命令来解决合并冲突。评注引用也可以使用其他的引用名称,合并其他的评注引用也可以使用本命令。下面是git notes merge命令的语法格式,具体操作请参见git help notes帮助。
用法1:git notes merge[-v|-q][-s<strategy>]<notes_ref>用法2:git notes merge—commit[-v|-q]
用法3:git notes merge—abort[-v|-q]