git - 断言当前 HEAD 指向 master 的命令?
问题描述
我想要一个将失败的命令(使用代码 1),除非 HEAD 指向 master。
这种作品:
git diff master --quiet || (echo 'Not master' && false)
但它太严格了——如果工作树中有任何未提交的更改,它也会失败。
我如何断言HEAD
指向master
,忽略工作树中的任何未分级或未提交的更改?
解决方案
考虑到 HEAD 可以直接指向一个提交(分离的头)或指向恰好与 master 尖端的提交内容匹配的某个分支,使用 diff 进行比较不会 100% 准确。另一方面,根据 docs, HEAD 只是一个包含符号引用的文件,可以直接进行比较。
test "$(cat "$(git rev-parse --git-path HEAD)")" == "ref: refs/heads/master"
或者
test "$(cat "$(git rev-parse --git-path HEAD)")" == "ref: refs/heads/master" && echo "HEAD points to master" || echo "HEAD does not point to master"
推荐阅读
- angular - Angular 6+ ngcc 无法在 ngx-monaco-editor 上运行
- r - 将日期和时间转换为以十进制小时为单位的经过时间
- python - 为什么这适用于我的字典片段?
- database-design - 将 Liquibase 与雪花一起使用
- java - 如何从我的应用程序向 android studio 中的用户发送电子邮件?
- python - 图像之间的互相关
- bash - 如何使用 bash 命令参数创建文件名?
- rdf - 如何运行 Wiselib - RDF 提供程序?
- java - replaceAll 重复字符
- visual-studio-2019 - 无法在 Visual Studio 中创建 Q# Quantum 应用程序