当我从bitbucket克隆存储库时,我在存储库克隆中的本地git配置始终具有某些设置,这些设置与我的全局设置不匹配。
我希望filemode = false。但是在本地git配置中,在git克隆之后,默认情况下始终将其设置为true。
我想知道本地git设置来自哪里以及如何编辑此“骨架”。
答案 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.ignorecase
和core.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 clone
或plugins {
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"
}
进行初始化或克隆然后更改设置,可能会更容易。