10

我注意到,当您在 Windows 环境中使用 Git 提交或签出文件时,不会保留文件属性(例如隐藏或只读)。如果我提交一个隐藏文件,然后在另一台计算机上检查它,则该文件不再隐藏。是否可以让 Git 识别 Windows 文件属性?

4

3 回答 3

11

不,Git 也不跟踪完整的 UNIX 权限,它只是为了方便而记住可执行位。至于为什么——它是一个版本控制系统,旨在主要跟踪源代码。这使得该功能完全无用(更不用说“隐藏”属性本身也毫无用处)。

于 2012-01-03T16:11:33.703 回答
9

您可以使用 post-checkout 客户端挂钩来进行您需要进行的任何更改。在您的情况下,您将使用它来运行设置所需 Windows 文件属性的脚本。

ProGit 在“其他客户端挂钩”段落中对此进行了一般性描述:

自定义 Git 钩子

另外,请参阅githooks手册页。

于 2012-01-03T16:16:39.147 回答
1

我尝试了@wadesworld 的建议并提出了这个建议,\.git\hooks\post-checkout使用以下内容创建文件:

#!/usr/bin/env pwsh
param (
    $PreviousHead,
    $NewHead,
    # Branch 1, File 0.
    $BranchOrFile
)
$Name = '.HideMe'
if ((Test-Path $Name) -and !(Get-Item $Name -Force).Attributes.HasFlag([IO.FileAttributes]::Hidden)) {
    (Get-Item $Name).Attributes += 'Hidden'
}

更改.HideMe为要隐藏的文件/文件夹,如果需要,您还可以使用 3 个参数,例如仅在分支检出或文件检出时运行。这需要安装 PowerShell Core 才能工作,但也可以在 cmd 或 Windows PowerShell 中实现。

于 2019-11-16T00:21:42.260 回答