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 是清空白名单。

 

 

 

 

 

 

 

 

 

全部评论

·