【发布时间】:2012-02-01 15:45:27
【问题描述】:
我注意到,当您在 Windows 环境中使用 Git 提交或签出文件时,不会保留文件属性(例如隐藏或只读)。如果我提交一个隐藏文件,然后在另一台计算机上检查它,则该文件不再隐藏。是否可以让 Git 识别 Windows 文件属性?
【问题讨论】:
标签: windows git file-attributes
我注意到,当您在 Windows 环境中使用 Git 提交或签出文件时,不会保留文件属性(例如隐藏或只读)。如果我提交一个隐藏文件,然后在另一台计算机上检查它,则该文件不再隐藏。是否可以让 Git 识别 Windows 文件属性?
【问题讨论】:
标签: windows git file-attributes
我尝试了@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 中实现。
【讨论】:
您可以使用结帐后客户端挂钩进行任何您需要进行的更改。在您的情况下,您可以使用它来运行设置所需 Windows 文件属性的脚本。
ProGit 在“Other Client Hooks”段落中概括地描述了这一点:
另外,请参阅 githooks 手册页。
【讨论】:
没有。 Git 也不跟踪完整的 UNIX 权限,它只是为了方便而记住可执行位。至于为什么——它是一个版本控制系统,旨在主要跟踪源代码。这使得该功能完全无用(更不用说“隐藏”属性本身也毫无用处)。
【讨论】: