1

标题说明了一切,但例如,如果HEADGit 存储库的 指向ref/heads/masterWindows 的任何使用良好的 Git 实现,则以下哪个是文件的内容.git/HEAD...哎呀,.git\HEAD

  • ref: refs/heads/master, 或者
  • ref: refs\heads\master?

无论哪种方式,我都需要计算绝对路径<git project>\.git\refs\heads\master,但我没有Windows环境,我无法知道使用哪种形式!非常感谢您的回答。

背景:我正在修改一个 Haskell 库,该库实现了一个宏,该宏在编译时将 Haskell 项目的 Git 修订哈希嵌入到其源代码中(非常适合实现--version选项!)。当我们编译调用该宏的程序时,git会调用它;然而在此之前,当构建工具检查是否需要重新编译时,我们无法调用git,所做的只是简单的文件更新检查!因此,在每次编译时,我们必须计算并保存所HEAD指向的参考文件的路径,以便下次检查参考文件是否更新。问题是我想让库跨平台,但我不知道如何在 Windows 上计算参考文件的路径,因为我不知道原始形式。

4

1 回答 1

2

HEAD使用参考名称而不是路径分隔符。Git 总是在引用名称中使用正斜杠,即使在 Windows 上也是如此。任何平台上的引用名称中都不允许使用反斜杠。

由于 Windows 也允许使用正斜杠路径分隔符(除非您使用的是 UNC 路径),因此在任何地方都使用正斜杠通常是安全的,除非您知道自己有特殊需要。

于 2020-05-14T00:25:54.203 回答