本地 Git 配置在 git 克隆后总是有不需要的文件模式设置
Local Git Config have always unwanted filemode settings after git clone
当我从 bitbucket 克隆存储库时,存储库克隆中的本地 git 配置总是有一些设置与我的全局设置不匹配。
我想要 filemode = false。但在本地 git 配置中,它在 git 克隆之后始终默认设置为真。
我想知道这个本地 git 设置来自哪里以及我如何编辑这个 "skeleton"。
这些 core
设置:
core.bare
core.repositoryformatversion
core.ignorecase
core.filemode
不是您通常应该更改的设置。前两个是 Git 自己的内部设置,其余两个通知 Git 在存储库 [=100] 上使用时 操作系统 的行为=] 刚刚创建。
具体来说,core.filemode
告诉Git以下实验的结果:1
仅使用模式 read/write 创建一个新文件(不执行)。
现在设置执行位。执行位设置了吗?
现在清除执行位。执行位是否清零?
如果执行位按照命令设置和清除它,core.filemode
设置为 true
。这告诉 Git 你和 Git 都可以控制是否设置执行位。
core.ignorecase
设置是在通过更简单的实验创建新存储库时建立的:
- 创建
.git/config
文件。现在尝试读取名为 .git/CoNfIg
的文件。这可能吗?
如果是这样,操作系统将打开一个文件,该文件的文件名只是大小写与实际文件不同。 Git 将此信息记录在 core.ignorecase
.
中
(repositoryformatversion
设置为 compiled-in 常量零,或者如果您使用一些新功能,有时会调整为 1。如果将来存储库格式发生变化,Git 会将新存储库中的格式版本设置为适当的数字。bare
标志根据您是否创建了裸克隆来设置,可能使用 --bare
或 --mirror
。)
因为 core.ignorecase
和 core.filemode
不打算 成为 user-configurable,Git 无法将它们设置为根据您的操作系统,Git 之外的其他内容是硬编码的。更改它们有点危险,因为它们会告知 Git 系统的行为方式 ,并且 Git 可能取决于该行为以正确操作各种 Git 命令。但是,为了某些特殊效果,可以与其中一个或两个一起说谎。只要确保你知道自己在做什么,当你这样做的时候。
(将 core.filemode
设置为 false
,即使 Git 会将其设置为 true
,目前是 "safe",对于安全的某些定义, 在任何时候, 所以如果它给你你想要的行为, 那实际上是好的, 至少现在是这样。我和 Git 都不会在这里对 Git 的未来版本做出任何承诺。)
1Git有一个compile-time选项告诉它:不要运行实验;只需每次都将 core.filemode
设置为 false。 因此,为了您的特定目的,您可以获得 Git 源的副本并使用 NO_TRUSTABLE_FILEMODE
集重建它。但是创建别名或 shell 脚本代替 git init
或 git clone
可能更容易,它会执行 init-or-clone 然后更改设置。
当我从 bitbucket 克隆存储库时,存储库克隆中的本地 git 配置总是有一些设置与我的全局设置不匹配。
我想要 filemode = false。但在本地 git 配置中,它在 git 克隆之后始终默认设置为真。
我想知道这个本地 git 设置来自哪里以及我如何编辑这个 "skeleton"。
这些 core
设置:
core.bare
core.repositoryformatversion
core.ignorecase
core.filemode
不是您通常应该更改的设置。前两个是 Git 自己的内部设置,其余两个通知 Git 在存储库 [=100] 上使用时 操作系统 的行为=] 刚刚创建。
具体来说,core.filemode
告诉Git以下实验的结果:1
仅使用模式 read/write 创建一个新文件(不执行)。
现在设置执行位。执行位设置了吗?
现在清除执行位。执行位是否清零?
如果执行位按照命令设置和清除它,core.filemode
设置为 true
。这告诉 Git 你和 Git 都可以控制是否设置执行位。
core.ignorecase
设置是在通过更简单的实验创建新存储库时建立的:
- 创建
.git/config
文件。现在尝试读取名为.git/CoNfIg
的文件。这可能吗?
如果是这样,操作系统将打开一个文件,该文件的文件名只是大小写与实际文件不同。 Git 将此信息记录在 core.ignorecase
.
(repositoryformatversion
设置为 compiled-in 常量零,或者如果您使用一些新功能,有时会调整为 1。如果将来存储库格式发生变化,Git 会将新存储库中的格式版本设置为适当的数字。bare
标志根据您是否创建了裸克隆来设置,可能使用 --bare
或 --mirror
。)
因为 core.ignorecase
和 core.filemode
不打算 成为 user-configurable,Git 无法将它们设置为根据您的操作系统,Git 之外的其他内容是硬编码的。更改它们有点危险,因为它们会告知 Git 系统的行为方式 ,并且 Git 可能取决于该行为以正确操作各种 Git 命令。但是,为了某些特殊效果,可以与其中一个或两个一起说谎。只要确保你知道自己在做什么,当你这样做的时候。
(将 core.filemode
设置为 false
,即使 Git 会将其设置为 true
,目前是 "safe",对于安全的某些定义, 在任何时候, 所以如果它给你你想要的行为, 那实际上是好的, 至少现在是这样。我和 Git 都不会在这里对 Git 的未来版本做出任何承诺。)
1Git有一个compile-time选项告诉它:不要运行实验;只需每次都将 core.filemode
设置为 false。 因此,为了您的特定目的,您可以获得 Git 源的副本并使用 NO_TRUSTABLE_FILEMODE
集重建它。但是创建别名或 shell 脚本代替 git init
或 git clone
可能更容易,它会执行 init-or-clone 然后更改设置。