【问题标题】:Git on Windows and file attributesWindows 上的 Git 和文件属性
【发布时间】:2012-02-01 15:45:27
【问题描述】:

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

【问题讨论】:

    标签: windows git file-attributes


    【解决方案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 中实现。

    【讨论】:

      【解决方案2】:

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

      ProGit 在“Other Client Hooks”段落中概括地描述了这一点:

      Customizing Git Hooks

      另外,请参阅 githooks 手册页。

      【讨论】:

      • 谢谢,我去看看书!
      • @wadesworld 您能否提供有关 windows 挂钩的示例?
      【解决方案3】:

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

      【讨论】:

      • 好的,谢谢您的明确答复。我的项目中几乎没有隐藏和只读文件,但如有必要,我会手动更改它们。
      • 我也想要这个功能,它不是“完全没用的”。例如,Unity 游戏开发环境创建一个边车“.meta”文件来管理它的场景数据库。这些文件需要修改,但没有人需要查看它们。
      • 我也觉得这很有用。我使用 VisualStudio 下的 node/grunt/bower 工具链进行开发,并将 node_modules 和 bower_components 文件夹设置为隐藏,阻止 VS 在解决方案资源管理器中对它们进行索引和搜索(甚至显示),这对于顺利开发非常重要。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多