如何使“git分支”尊重Linux上的“core.ignorecase”标志?

2024-02-28

我们正在使用位于办公室 Linux 服务器上的远程 Git 存储库。所有客户端都是 Windows PC,并安装了 Git 扩展作为客户端(使用 msysgit 运行)。

在客户端系统上,如果我尝试执行以下操作:

git branch Branch1
git branch branch1

第二个命令将会失败,告诉我具有该名称的分支已经存在。这就是我所期望的,因为我设置了core.ignorecase为真git config.

但是,如果我直接登录 Linux 系统并运行相同的命令,两个分支都会被创建,即使core.ignorecase标志设置为 true。

我预计第二个命令也会失败,因为我将存储库配置为忽略大小写,但要么该标志在 Linux 系统上没有任何作用,要么我错过了一些东西。

任何人都可以帮助我理解这个问题,因为我们计划很快将 SCM 从 Source Safe 迁移到 Git,这个问题让我们感到害怕。如果两个开发人员创建名称相同但大小写不同的分支,并将结果推送到 Linux 存储库上,会发生什么情况?


我想在@meagar的回答中添加更多细节:

FAT32/NTFS 是保留大小写 http://en.wikipedia.org/wiki/Case_preservation文件系统。也就是说,如果您将文件命名为“Foo.txt”,它将被存储为“”Foo.txt”。如果您将文件另存为“foo.txt”,它将被保存为“foo.txt”。但是由于它不区分大小写,因此“Foo.txt”和“foo.txt”实际上是相同的,并且您不能将这两个文件放在同一目录中。

在 Windows 中的存储库中,如果将名称从“Foo.txt”更改为“foo.txt”,并且不通过 git 将其显示为更改,则可以设置core.ignorecase配置为 true 并且 git 不会将其视为更改。如果你把它设置为 false 就会。 (但由于文件系统和 git 的性质,看起来像是添加了一个新文件 foo.txt,这在 Windows 上增加了混乱)。

这就是该项目的目的core.ignorecase

来到分行。分支只是指向提交的指针。这些指针只是文件。这些文件存储在.git/refs/heads。当你创建一个分支时,比如说,bar,一个名为.git/refs/head/bar被建造。现在,在 Linux 中,当您创建一个名为Bar,它可以继续创建一个文件.git/refs/head/Bar因此允许创建分支。但在 Windows 上,您无法创建.git/refs/head/Bar因此,当 bar 存在时,您将无法创建 Bar 分支。意识到core.ignorecase与您的存储库(您的代码库)中的文件有关,并且对 git 的元数据文件没有影响。

因此,您必须接受并适应这样一个事实:在 Linux 中,您可以创建具有相同名称但大小写不同的分支,但在 Windows 中则不能。

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

如何使“git分支”尊重Linux上的“core.ignorecase”标志? 的相关文章

  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • Windows 中内存分配的限制+我计算得是否正确?

    我正在编写一个需要大量内存的程序 大型图形分析 目前我的程序中有两个主要的数据结构 占用了大部分内存 这些都是 n n 类型的矩阵int 和长度为 n 的数组 类型Node 在本例中 节点是一个包含两个 int 的结构体 sizeof No
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 在 System.Windows.Forms.RichTextBox 中禁用 VScrollbar 的绘制

    我有一个继承自 RichTextBox 的自定义控件 该控件能够 禁用 富文本编辑 我通过在 TextChanged 事件期间将 Rtf 属性设置为 text 属性来实现此目的 这就是我的代码的样子 private bool lockTex
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 确保 config.h 包含一次

    我有一个库项目 正在使用 Linux 中的 autotools 套件移植到该项目 我对自动工具很陌生 本周 我已经了解了其操作的基础知识 我有一个关于如何保留内容的问题config h免遭重新定义 我惊讶地发现生成的config h文件也没
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • 如何在 Windows 上查找当前系统缓存大小?

    到处搜索 但未能找到 API 调用来检索 Windows 上 文件 系统缓存的当前大小 全局内存状态Ex https stackoverflow com a 2017659 450917 检索总计 免费 已用和交换统计数据 获取系统文件缓存
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 如果文件已在服务器上,请避免使用 git-ftp 上传

    假设我有应用程序的本地副本 我将其推送到 github 然后使用 git ftp 将任何更改上传到我的服务器 我首先会使用 git ftp init u
  • git-svn --忽略路径

    我现在在 git svn 的 ignore paths 选项上挣扎了几个小时 试图从大型存储库中仅获取某些标签 我想在 dev 处开始获取 看起来像 gt svn ls http 192 168 0 2 svn repo corporati
  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 使用 Git 的 Spring Cloud 配置服务器 - 无法克隆或签出存储库连接超时

    我正在使用 GIT 在 Spring Cloud Config Server 上进行 POC Spring Boot 1 5 3 RELEASE 爪哇1 8 弹簧工具套件https github com kishornpatil https
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 从 git 中删除历史记录 - git 命令失败

    我正在尝试从 Git 历史记录中清除项目 bin 目录 我已经将 bin 添加到 gitignore 并运行 git rm cached r bin成功地 现在我尝试使用 GitHub 帮助页面中推荐的命令来清除历史记录 git filte

随机推荐