2012/09/14

git命令之update-ref

得空说说git update-ref。该命令用来更新ref引用的object。比如在一个bare repo里更新某个分支指向的提交。
命令用法如下:
git update-ref [-m <reason>] (-d <ref> [<oldvalue>] | [--no-deref] <ref> <newvalue> [<oldvalue>])

当带2个参数使用git update-ref时,会把赋给。同时它会解析遇到ref引用。(比如HEAD就是指向refs/heads/master的引用,更新HEAD实际上是更新refs/heads/master)。

当带3个参数使用时,在赋值之前会检查的当前值是否为。只有这个检查结果为真时,才会实际执行赋值操作。你可以利用这个特性,通过将设置为40个"0"或者一个空字符串来确保创建一个全新的ref。

如果使用--no-deref参数,update-ref会直接更新而不会解析相关的ref引用。

通常情况下,你应该使用更安全的:
git update-ref HEAD "$head"

而不是直接修改HEAD文件内容:
echo "$head" > "$GIT_DIR/HEAD"

没有评论:

发表评论