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

推荐订阅源

小众软件
小众软件
A
About on SuperTechFans
博客园 - Franky
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
B
Blog
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
Martin Fowler
Martin Fowler
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
Last Week in AI
Last Week in AI
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
V
V2EX
G
Google Developers Blog

又见苍岚

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/