git clone之后,本地Git Config始终具有不需要的文件模式设置

时间:2019-07-05 20:20:02

标签: git repository bitbucket config

当我从bitbucket克隆存储库时,我在存储库克隆中的本地git配置始终具有某些设置,这些设置与我的全局设置不匹配。

我希望filemode = false。但是在本地git配置中,在git克隆之后,默认情况下始终将其设置为true。

我想知道本地git设置来自哪里以及如何编辑此“骨架”。

1 个答案:

答案 0 :(得分:3)

这些core设置:

  • core.bare
  • core.repositoryformatversion
  • core.ignorecase
  • core.filemode

不是您通常应更改的设置。前两个是Git自己的内部设置,其余两个在Git刚创建的存储库中使用时通知Git您操作系统的行为

具体来说,core.filemode告诉Git以下实验的结果: 1

  • 以只读模式(不执行)创建新文件。

    现在设置执行位。执行位设置了吗?

    现在清除执行位。执行位被清除了吗?

如果执行位跟随命令进行设置和清除,则core.filemode被设置为true。这告诉Git您和Git都可以控制是否设置了执行位。

通过更简单的实验创建新存储库时,将建立core.ignorecase设置:

  • 创建.git/config文件。现在尝试读取名为.git/CoNfIg的文件。这可能吗?

如果是这样,则操作系统将打开一个文件名,该文件名仅与实际文件不同。 Git将此信息记录在core.ignorecase中。

({repositoryformatversion设置为已编译的常量零,如果使用某些新功能,有时会调整为1。如果将来存储库格式发生更改,Git会将格式版本设置为new将存储库设置为适当的编号。bare标志是根据您是否创建裸克隆而设置的,也许使用--bare还是使用--mirror。)

由于core.ignorecasecore.filemode并非用户可配置的,因此Git除了将Git硬编码为基于Git的方式之外,没有提供其他方法来设置它们您的操作系统。更改它们会有些危险,因为它们会通知Git 系统的行为,并且Git可能依赖于该行为来正确执行各种Git命令。但是,可以为某些特殊效果而躺在其中一个或两个上。只要确保您知道自己在做什么,就可以了。

(即使Git会将core.filemode设置为false,将true设置为core.filemode,对于某种安全的定义,目前始终是“安全的”,因此为您提供所需的行为,至少在目前至少是可以的。在这里,我和Git均未对Git的未来版本做出任何保证。)


1 Git有一个编译时选项可以告诉它:请勿运行实验;只需每次将NO_TRUSTABLE_FILEMODE设置为false。因此,出于您的特定目的,您可以获取Git源的副本并使用git init设置对其进行重建。但是,仅使用别名或shell脚本而不是git cloneplugins { kotlin("plugin.jpa") version "1.2.71" id("org.springframework.boot") version "2.1.6.RELEASE" id("io.spring.dependency-management") version "1.0.7.RELEASE" kotlin("jvm") version "1.2.71" kotlin("plugin.spring") version "1.2.71" --> kotlin("kapt") version "1.3.41" } 进行初始化或克隆然后更改设置,可能会更容易。