Git on Windows和文件属性

时间:2012-01-03 16:08:57

标签: windows git file-attributes

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

感谢。

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:9)

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

ProGit在“其他客户端挂钩”段落中概括地描述了这一点:

Customizing Git Hooks

另请参阅githooks手册页。

答案 2 :(得分:0)

我尝试了@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中实现。