git 的“文件模式”是什么?

2024-04-22

什么是 gitfilemode?对我来说,它在每个仓库中./git/config文件,靠近顶部:

 [core]
    filemode = true

它是什么?这是什么意思?与以下有什么关系吗

    bare = false

我也不太明白?


A git 裸仓库 (详细信息在这里 https://stackoverflow.com/a/24115534/6309) 与文件模式无关。

裸存储库用作目标,进行推送。
您可以推送到裸存储库,因为它没有工作树:无需担心保持所述工作树与您刚刚推送的内容同步。

什么是“假”文件?什么构成“工作”目录?

不存在“假”文件。只是一个裸存储库仅包含 git 的管理和控制文件,而不包含您可以使用和修改的实际数据文件。
当存储库不是裸露的时候,它们会在“工作目录”中签出。

The git config手册页 http://git-scm.com/docs/git-config

core.fileMode

如果为 false,则忽略索引和工作树之间的可执行位差异;对于损坏的文件系统很有用,例如FAT(文件分配表) http://en.wikipedia.org/wiki/File_Allocation_Table.
See git-update-index http://git-scm.com/docs/git-update-index.html#_configuration.

指挥部荣誉core.filemode配置变量。
如果您的存储库位于可执行位不可靠的文件系统上,则应将其设置为false.
这会导致命令忽略索引中记录的文件模式和文件系统上的文件模式的差异(如果它们仅在可执行位上不同).
在这样一个不幸的文件系统上,您可能需要使用git update-index --chmod=.

对我来说,它在每个仓库中./git/config文件,靠近顶部,

我也是,但是在 Windows 上,它总是:

git config --local core.filemode
false

不要忘记 git 只记录两种文件模式:

  • 644
  • 755

With Git 2.37.3 (Q3 2022), "git fsck https://github.com/git/git/blob/363a193c3a2141f34808d70fdae8beac76076a53/Documentation/git-fsck.txt"(man https://git-scm.com/docs/git-fsck) is better at detecting invalid file modes.

在 2.37.3 之前,它从树对象读取模式,但在将模式传递给逻辑以检查对象健全性之前对其进行规范化,这在检查逻辑中隐藏了损坏的树对象。
这已得到纠正,但为了帮助退出无法追溯修复的损坏树对象的项目,此代码检测到的异常严重性目前已降级为“信息”。

See commit 4dd3b04 https://github.com/git/git/commit/4dd3b045f528b8d9cbbb4a50e371affb0543f37d, commit 53602a9 https://github.com/git/git/commit/53602a937dc9eacd67b6afcd781f7b15bb02682f, commit ec18b10 https://github.com/git/git/commit/ec18b10bf20574fc6d60c966412a11c81f9c17e0 (10 Aug 2022) by Jeff King (peff) https://github.com/peff.
(Merged by Junio C Hamano -- gitster -- https://github.com/gitster in commit 363a193 https://github.com/git/git/commit/363a193c3a2141f34808d70fdae8beac76076a53, 18 Aug 2022)

fsck https://github.com/git/git/commit/53602a937dc9eacd67b6afcd781f7b15bb02682f:实际上检测树中的错误文件模式

Reported-by: Xavier Morel
Signed-off-by: Jeff King

我们用的是普通的tree_desc在 fsck 中迭代树的代码,这意味着我们只能看到它返回的规范化模式。
因此,我们永远不会看到任何意外的事情,因为它实际上会强制任何垃圾进入我们正常和接受的模式之一。

我们可以使用新的RAW_MODES标记以查看真实模式,然后使用现有代码来实际分析它们。
现有代码是按照允许已知良好的方式编写的,因此测试各种损坏没有多大意义。
这里测试的应该是S_IFREG但有无意义的权限。

Do note that the error-reporting here isn't great.
We don't mention the specific bad mode, but just that the tree has one or more broken modes.
But when you go to look at it with "git ls-tree https://github.com/git/git/blob/53602a937dc9eacd67b6afcd781f7b15bb02682f/Documentation/git-ls-tree.txt"(man https://git-scm.com/docs/git-ls-tree), we'll report the canonicalized mode!
This isn't ideal, but given that this should come up rarely, and that any number of other tree corruptions might force you into looking at the binary bytes via "cat-file", it's not the end of the world.

警告是:

warning in tree $tree: badFilemode: contains bad file modes 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 的“文件模式”是什么? 的相关文章

  • git:显示所有已修改的文件 - 已暂存和未暂存

    我需要一个命令给我所有修改过的文件 这包括暂存 即新添加的文件 和非暂存更改 在普通列表我可以在脚本中使用它 虽然这个问题可能听起来很熟悉 但我只找到接近我想要做的命令 git ls files m 列出 非分阶段 修改但忽略了上演的和新的
  • Git 注释详细信息

    我读了this http git scm com 2010 08 25 notes html and this https github com blog 707 git notes display但仍然认为它们晦涩难懂 目前为止了解到 创
  • Jenkins 的 Gerrit 触发器找不到任何要构建的修订

    我在使用 Jenkins Gerrit 时遇到问题 这是我到目前为止得到的 Jenkins 中的 Gerrit 触发器配置似乎没问题 当我推送新的变更集时 Jenkins 构建就会启动 我用过这个 Jenkins Gerrit 触发器问题的
  • git rebase 开发分支

    抱歉 只是另一个 变基 问题 但我对此感到困惑 我有时会将开发分支上的提交推送到远程 原始 现在 关于 rebase 总是提到的一件事是 如果您推送了更改 则永远不要 rebase 这意味着 我永远无法重新调整我的开发分支 只能合并它 在功
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • 错误“致命:无法快进,正在中止”

    为什么 Git 不再允许我快进合并 如果我尝试使用强制它 ff only 我收到消息 fatal 无法快进 中止 我意识到有巨大的优势merge no ff 但我只是困惑为什么我不能 ff only now 免责声明 这些命令会将远程分支的
  • 有没有一种简单的方法可以知道哪些文件将在下一个“git pull”中更新?

    我想知道如果我执行 git pull 哪些文件将被更新 以及希望发生的更改 is git stash git fetch git diff origin master git stash apply 答案 See here http ker
  • 连接两个 Git 存储库的历史记录?

    我有一个旧的 Git 存储库 请调用它app 然后 一年后 我想从头开始重建应用程序 所以我创建了一个新的存储库 称之为app 2 现在 我意识到我应该创建一个新分支或其他东西 而不是一个新的存储库 因为我想移动app 2在之上app然后摆
  • 撤消 git merge(尚未推送)

    我只是将一些更改提交到我的功能分支之一 feedback tab 然后签出 master 并将它们合并到那里 我实际上打算将它们合并到我的 开发 分支中 现在 master 领先于 origin master 其远程 17 个提交 我还没有
  • 通过 Git/SVN 将前缀 ? 添加到代码中

    怎么加前缀 v VersionNumber使用 Git SVN 高效地访问存储库中的每个文件 我发现 SO 使用这种做法为其存储库中的每个特定文件提供版本号 他们使用SVN 我想知道如何使用 Git 做同样的事情 举几个例子 1 2 在你的
  • 使用 Git 和 Eclipse 管理 Android 项目

    我相信我有一个非常常见的问题 它会影响具有多个应用程序版本的开发人员 在我的例子中 我有两个 付费版本和免费版本 为了管理这两个版本 我使用具有 2 个不同分支的同一个 git 项目 免费和付费 然而 我的源代码包名称彼此不同 如预期 并且
  • git merge,保留两者

    为了合并 我用它来 保留我的 git merge X ours foo 这是 保留他们的 git merge X theirs foo 然而 在我最近的合并中 看起来最好保留双方 Git 是否有一个 策略 来避免手动编辑文件 没有解决这些冲
  • 如何修复 GitHub 拉取请求中被 git rebase 破坏的提交顺序?

    当我编写代码时 我会将其分解为小的逻辑更改 以便轻松快速地进行审查 为此 我使用git rebase i 交互式 压缩 删除和更改提交的顺序 我注意到这有时会导致 GitHub 拉取请求的提交顺序不同 尽管该顺序保留在远程分支上 例如 co
  • 如何调试 Jenkins 作业中无法运行程序“C:\Program Files\Git”?

    我正在使用 jenkins 构建我的 git 项目 这是我在查看日志时收到的错误 我在 jenkins 中使用 git 插件 您将如何解决该错误消息 Started by user anonymous Building in workspa
  • Maven 找不到 .git (dotGitDirectory)

    我有一个与所问问题类似的问题here https stackoverflow com questions 31159484 mavengit commit id plugin git directory could not be found
  • 如何从 Visual Studio 2013 将现有解决方案添加到 GitHub

    我浏览了许多关于 VS 2013 中新的 Git 集成的网页 它们不涉及向 Github 添加现有解决方案 事实上 我找不到太多关于使用 GitHub 而不是 Visual Studio Online 的信息 谁能告诉我如何从现有解决方案开
  • 将新文件推送到新存储库 Git

    我是 git 新手 还没有完全了解工作流程 因此 我在 github com 上创建了一个存储库 并且能够从我的计算机推送所有文件 现在我已经在 github 上创建了一个新的存储库 并在我的计算机上创建了一个新文件夹 所有内容都从新文件夹
  • 错误:获取远程存储库“origin”时出错,返回状态代码-1:

    我在 Windows 上运行 Jenkins 当我尝试通过 jenkins 构建我的项目时 出现以下错误 git exe c core askpass true fetch tags progress
  • 无法通过 HTTPS 克隆私有 Github 存储库

    我在通过 HTTPS 克隆私有 GitHub 存储库时遇到问题 如果我尝试使用以下方式克隆我的存储库 git clone https github com username repository 我收到错误 fatal remote err
  • 使用 jar 外部的配置启动 .jar,但能够从任何当前目录执行此操作

    我一直在努力解决一个特定的问题 我在 jar 文件中有一个 Java 程序 并且在 jar 之外有一个 lib 目录和一个 config 目录 但与 jar 本身所在的目录位于同一目录中 我正在尝试参考config foo config从代

随机推荐

  • 复杂的 Linq 查询未按预期工作

    我想合并 4 个表的结果并使用 LINQ 选择特定字段 请耐心等待 因为我没有做过复杂的 LINQ 查询 表 1 订阅者 表 2 订阅 表 3 状态 表 4 国家 地区 注意 订阅者可以有 0 个 1 个或多个订阅 这意味着外键 Subsc
  • 如何使用 Apollo 后端在 TypeScript Angular 应用程序中输入部分类型?

    编辑 我正在寻找来自 Graphql Angular 社区的权威和来源答案 以提供最佳实践示例 例如 我们在 TypeScript 中定义了一个 Person 类型 interface Person firstName string las
  • 从 WordPress 主题创建 Octopress 主题

    我已经使用 wordpress 一段时间了 想尝试一些不同的东西 进入我对静态网站生成世界的发现 现在我关注的是 Octopress 我知道它是基于 jekyll 构建的 在我开始接触 ruby 之前 我想知道是否有可能翻译我的curren
  • 并排启动两个资源管理器窗口

    有没有办法使用批处理脚本并排 垂直平铺 启动两个资源管理器窗口 如果没有 我该如何使用 VBS 来做到这一点 我已经修改了上面的VBS脚本Hackoo完全按照OP的要求去做 脚本中的注释准确地解释了它将做什么 如果两个窗口未设置到正确位置
  • 动态文件下载,无需在服务器中保存文件

    我正在使用 Apache POI 库对多个 excel 文件执行一些操作 我正在尝试下载 Excel 报告而不将其存储在服务器中的某个位置 我正在使用 Struts 2 它需要将文件输入到InputStream而 POI 工作簿需要Outp
  • Android“Hello World”教程程序。错误:[解析错误] 解析包时出现问题

    今天我决定开始为 Android 操作系统进行开发 我访问了他们的网站 下载了所有必需的软件 Eclipse Android SDK Eclipse 的 ADT 插件等 我按照提供的 Hello World 教程进行操作 链接文本 http
  • 使用媒体查询调整图像大小

    好的 我正在使用 bootstrap 3 和 Quicksand js 制作一个可过滤的投资组合 我正在使用流沙来过滤投资组合 现在 当我的图像设置宽度和高度时 我的工作正常 但是当我将宽度和高度更改为 100 时 排序很奇怪 图像在排序时
  • 如何在plotly中绘制饼图?

    如何在 fig 中绘制 pie1 子图 使其位于 第一个 位置 我就是这样做的 但没有成功 import pandas as pd import numpy as np import seaborn as sns import plotly
  • 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

    我似乎遇到了命名管道 101 问题 我有一个非常简单的设置来连接从 C 非托管应用程序传输到 C 托管应用程序的单工命名管道 管道已连接 但我无法通过管道发送 消息 除非我关闭似乎刷新缓冲区并传递消息的句柄 就好像消息被屏蔽了一样 我尝试颠
  • 发生未处理的异常:开发服务器仅支持每个构建本地化单个区域设置

    请告知如何修复此错误 我正在尝试实现本地化 但遇到了此问题 我使用的指南 https angular io guide i18n merge translations into the app https angular io guide
  • Django 调试工具栏仅适用于管理部分

    嘿 我已经使用 Django 1 2 1 一段时间了 前几天遇到了 Django 调试工具栏 它看起来真的很有用 我真的很想尝试一些东西 我完全按照自述文件所说的安装了 一步步 我将中间件放在最后 以防万一出现问题 但我使用的是相当标准的中
  • 使用递归对数字求和

    我刚刚研究了递归的概念 我想尝试一个简单的例子 在下面的代码中 我尝试获取数字 1 2 3 4 5 并使用递归将它们加在一起 我预计结果是 15 但我的代码返回 16 我究竟做错了什么 Code static void Main strin
  • Terraform 13,根据另一个变量的值验证变量

    有没有办法实现以下逻辑 variable environment description The environment this will be run in can only be set to preprod test prod ty
  • file_get_contents:无法设置本地证书链文件

    我们使用 Composer 来升级 Satis 的依赖项 最近的服务器升级后 我们无法这样做 缩小可能的原因后 我们发现 file get contents php 函数在尝试建立 ssl 连接时失败 我们使用以下脚本来测试我们的 ssl
  • 使用 pandas 将一列字典拆分/分解为单独的列

    我的数据保存在postgreSQL数据库 我正在使用 Python2 7 查询这些数据并将其转换为 Pandas DataFrame 但是 该数据帧的最后一列内部有一个值字典 数据框df看起来像这样 Station ID Pollutant
  • 3D 空间:使用鼠标指针沿着对象指向的方向

    给定相机面向的方向的 3D 向量以及 3D 空间中 3D 对象的方位 方向向量 如何计算鼠标指针在屏幕上必须遵循的 2 维斜率 以便在视觉上沿着所述物体的方向移动 基本上 我希望能够单击箭头并通过拖动它来使其前后移动 但前提是鼠标指针沿着箭
  • 从 shell 脚本内的 php 脚本检索退出状态

    我有一个 bash shell 脚本 它调用一些像这样的 PHP 脚本 bin bash php f somescript php php f anotherscript php 我想根据这些脚本的结果编写错误日志和 或活动报告 有什么方法
  • 从 Jenkins 运行 Robot Framework 测试时,浏览器永远不会打开

    我正在尝试在我的 OSX 笔记本电脑上运行 Jenkins 的 RF Selenium2Library 测试 Jenkins 默认安装为用户 jenkins 我安装了 Jenkins 的 RF 插件并设置了环境变量 一切正常 除了浏览器永远
  • 如何将当前行与r中所有以前的行进行比较

    我在 r 中有一个数据框 No value time 1 2 12 2 4 23 3 6 13 4 8 8 5 10 13 6 12 24 我想要的数据框是 No value time flag 1 2 12 0 NA 2 4 23 0 4
  • git 的“文件模式”是什么?

    什么是 gitfilemode 对我来说 它在每个仓库中 git config文件 靠近顶部 core filemode true 它是什么 这是什么意思 与以下有什么关系吗 bare false 我也不太明白 A git 裸仓库 详细信息