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