设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.48.1 → 2.53.0 无变更
-
2.48.0
2025-01-10
- 2.43.1 → 2.47.3 无更改
-
2.43.0
2023-11-20
- 2.39.1 → 2.42.4 无更改
-
2.39.0
2022-12-12
- 2.1.4 → 2.38.5 无变更
-
2.0.5
2014-12-17
概要
git symbolic-ref [-m <reason>] <name> <ref>
git symbolic-ref [-q] [--short] [--no-recurse] <name>
git symbolic-ref --delete [-q] <name>
描述
如果提供一个参数,则读取给定的符号引用所指向的分支头,并输出其相对于 .git/ 目录的路径。通常情况下,你会将 HEAD 作为 <name> 参数,以查看当前工作区处于哪个分支。
如果提供两个参数,则创建或更新一个符号引用 <name>,使其指向给定的分支 <ref>。
如果提供 --delete 和一个额外参数,则删除给定的符号引用。
符号引用是一个普通文件,存储着一个以 ref: refs/ 开头的字符串。例如,你的 .git/HEAD 就是一个普通文件,其内容为 ref: refs/heads/master。
选项
- -d
- --delete
-
删除符号引用 <name>。
- -q
- --quiet
-
如果 <name> 不是符号引用而是处于游离状态的 HEAD (detached HEAD),不发出错误消息;而是静默地以非零状态退出。
- --short
-
当显示 <name> 作为符号引用的值时,尝试缩短该值,例如将
refs/heads/master缩短为master。 - --recurse
- --no-recurse
-
当显示 <name> 作为符号引用的值时,如果 <name> 指向另一个符号引用,则追踪该符号引用链,直到结果不再指向符号引用为止(
--recurse,这是默认行为)。--no-recurse则在仅解引用一级符号引用后停止。 - -m
-
使用 <reason> 更新 <name> 的引用日志 (reflog)。这仅在创建或更新符号引用时有效。
注意事项
在过去,.git/HEAD 是指向 refs/heads/master 的符号链接。当我们想切换到另一个分支时,我们会执行 ln -sf refs/heads/newbranch .git/HEAD,当我们想找出当前处于哪个分支时,我们会执行 readlink .git/HEAD。但由于符号链接并非完全可移植,因此它们现在已被弃用,默认使用符号引用(如上所述)。
如果符号引用的内容被正确打印,git symbolic-ref 将以状态码 0 退出;如果请求的名称不是符号引用,则以状态码 1 退出;如果发生其他错误,则以状态码 128 退出。