惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
量子位
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
Y
Y Combinator Blog
L
LangChain Blog
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Git 文件模式 mode
Yiwei Zhang · 2025-01-22 · via 又见苍岚

Git 中的 “mode” 指的是文件的模式位,它决定了文件是常规文件、目录、符号链接,以及文件的权限设置(读、写、执行权限),本记录相关内容。

简介

git 会管理文件的模式,同内容一样会纳入修改范畴。当文件模式被修改时,虽然内容相同但是仍然可以在修改列表中看到他。

1
2
3
diff --git a/SuperBuild/cmake/External-GFlags.cmake b/SuperBuild/cmake/External-GFlags.cmake
old mode 100644
new mode 100755

这表明文件的权限(mode)发生了变化,而不是文件的内容。具体来说:

  • 100644 表示文件之前是普通文件,权限为 -rw-r--r--(所有者可读写,其他人只读)。
  • 100755 表示文件现在是可执行文件,权限为 -rwxr-xr-x(所有者可读写执行,其他人可读可执行)。

文件模式类型

  • 常规文件 (100644): 常规文件的模式位通常表示为 -rw-r--r--,意味着所有者有读和写权限,而组和其他用户只有读权限。
  • 可执行文件 (100755): 可执行文件的模式位通常表示为 -rwxr-xr-x,意味着所有者、组和其他用户都有读和执行权限,所有者还可以写。
  • 符号链接 (120000): 符号链接的模式位表示文件是一个指向其他文件或目录的链接。
  • 目录 (040000): 目录的模式位表示文件是一个目录。

Git 如何跟踪模式变化

  • 提交时:当你使用 git add 命令添加文件到暂存区时,Git 会记录文件的当前模式位。当你提交更改时,这些模式位会被存储在 Git 的对象数据库中。
  • 检出时:当你使用 git checkout 命令检出文件时,Git 会根据存储在对象数据库中的模式位设置文件的权限。

管理文件模式

  • 查看模式变化:使用 git diff --summarygit status 命令可以查看文件模式的变化。

  • 忽略模式变化

    :如果你不希望 Git 跟踪文件权限的变化,可以在全局配置中设置core.fileModefalse

    1
    git config --global core.fileMode false

    或者只在当前仓库中设置:

    1
    git config core.fileMode false
  • 强制设置模式:你可以使用 git update-index命令来强制设置文件的特定模式位:

    1
    git update-index --chmod='+x' <file>

    这个命令会为指定的文件添加执行权限。

注意事项

  • 文件权限在非 Unix 系统上可能不会得到完全的支持。
  • 在团队协作中,文件权限的变化可能会导致混乱,特别是当团队成员使用不同的操作系统时。
  • 在某些情况下,文件权限的变化可能不是由文件内容的变化引起的,例如,当文件从一台机器复制到另一台机器时,权限可能会改变。

文章链接:
https://www.zywvvd.com/notes/tools/git/git-mode/git-mode/