git操作目录白名单
24 2025-11-19 09:40
git describe --tags什么意思
git describe --tags 是一个 Git 命令,用于生成一个可读的、基于标签(tag)的版本描述字符串,常用于版本发布或构建时生成版本号。✅ 作用
它会根据最近的标签(tag)、提交次数和当前提交的缩写哈希,生成一个描述字符串,比如:
v1.2.0-5-gabc1234
✅ 各部分含义(以 v1.2.0-5-gabc1234 为例)
表格
复制
| 部分 | 含义 |
|---|---|
v1.2.0 |
最近的标签(tag) |
5 |
从这个标签之后又有 5 次提交 |
gabc1234 |
当前提交的缩写哈希(g 表示 Git) |
✅ --tags 的作用
默认
git describe 只考虑带注释的标签(annotated tags),而 --tags 会让它也考虑轻量标签(lightweight tags)。✅ 示例
bash
复制
$ git describe --tags
v1.2.0-5-gabc1234
表示:
当前代码基于标签v1.2.0,之后有 5 次提交,当前提交哈希是abc1234。
✅ 常见用途
-
自动生成版本号(如
v1.2.0-5-gabc1234) -
在 CI/CD 中构建版本字符串
-
快速判断当前代码“离上一个 Release 有多远”
✅ 小结一句话
git describe --tags就是:“告诉我,我现在在哪,离我最近的标签有多远。”
git config --global --unset safe.directory
git config --global --add safe.directory
什么意思
这两个命令是 Git 用来管理「safe.directory」列表的,解决的是:
“Git 拒绝在‘被认为不安全’的目录里操作仓库” 的问题。
✅ 背景:为什么会出现这个限制?
从 Git 2.35.2 开始,如果仓库目录的所有者不是当前用户,Git 会默认拒绝操作,防止恶意仓库利用 Git 配置执行代码。
报错示例:
fatal: unsafe repository ('/some/path' is owned by someone else)
✅ 命令解释
表格
复制
| 命令 | 作用 |
|---|---|
git config --global --unset safe.directory |
清空全局的 safe.directory 列表(一条不留) |
git config --global --add safe.directory <路径> |
把指定目录加入“白名单”,告诉 Git:“我相信这个目录,即使所有者不是我也可以操作” |
✅ 举个例子
1. 把某个目录加白名单
bash
复制
git config --global --add safe.directory /home/other/workspace
以后不管所有者是谁,你都可以在
/home/other/workspace 里执行 Git 命令。2. 清空所有白名单
bash
复制
git config --global --unset safe.directory
如果之前加过很多路径,想一次性清空,就用这个。
✅ 查看当前白名单
bash
复制
git config --global --get-all safe.directory
⚠️ 注意
-
--add可以多次使用,不会自动去重,重复添加会累积。 -
路径可以是
*(通配符),表示信任所有目录,但极不推荐:bash
-
复制
git config --global --add safe.directory "*"
✅ 一句话总结
这两个命令就是 “告诉 Git 哪些目录可以跳过所有权检查” 的开关:
--add是加白名单,--unset是清空白名单。
全部评论