我注意到,当您在Windows环境中使用Git提交或签出文件时,不会保留文件属性(例如隐藏或只读)。如果我提交一个隐藏文件,然后我在另一台计算机上检查它,该文件不再隐藏。是否可以让Git识别Windows文件属性?
感谢。
答案 0 :(得分:10)
没有。 Git也不跟踪完整的UNIX权限,它只是为了方便而记住可执行位。至于为什么 - 它是一个版本控制系统,旨在主要跟踪源代码。这使得这个功能完全没用(更不用说'隐藏'属性本身也没用了。)
答案 1 :(得分:9)
您可以使用post-checkout客户端挂钩进行所需的任何更改。在您的情况下,您将使用它来运行设置所需Windows文件属性的脚本。
ProGit在“其他客户端挂钩”段落中概括地描述了这一点:
另请参阅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中实现。