【问题标题】:Unable to symlink to the .git directory无法符号链接到 .git 目录
【发布时间】:2012-09-20 13:13:03
【问题描述】:

这可能有点傻,但是四处搜索我一直无法找到答案。 我正在尝试为我的 git 项目设置预提交挂钩,以便脚本可以与源代码一起进行版本控制。

似乎支持符号链接以及实现此目的的方法。当我尝试使用 .git 目录中的任何内容时,我收到错误“没有这样的文件或目录”。 .git 目录的设置方式有什么奇怪的吗?我现在正在通过 Windows 上的 cygwin 执行此操作,以防万一。

例如,我用来设置符号链接的脚本如下所示:

#/bin/bash

HOOK_NAMES="pre-commit post-commit"
THIS_SCRIPT_DIR=$(dirname $0)
HOOK_DIR=$THIS_SCRIPT_DIR/../.git/hooks

for hook in $HOOK_NAMES; do
    ln -s -f $THIS_SCRIPT_DIR/git-hooks/$hook $HOOK_DIR/$hook
done

谢谢,

====

跟进:这似乎是 Cygwin 的一个问题,尽管我无法找到解释它的文档。这在 Linux 和 OS X 上运行良好。Cygwin 在隐式隐藏文件夹(. 前缀)中创建符号链接时遇到问题。如果有人知道为什么我会很乐意将该解释标记为答案。

【问题讨论】:

    标签: git cygwin githooks


    【解决方案1】:

    我不知道为什么这在 Cygwin 中不起作用(对我来说似乎是一个错误),但如果其他人有同样的问题,我可以通过从 .git 内部创建符号链接来解决它文件夹。因此,例如,您可以从命令行转到 .git/hooks 文件夹:

    > cd .git/hooks
    

    然后创建链接

    > ln -s ../../git-hooks/pre-commit pre-commit
    

    【讨论】:

      【解决方案2】:

      您似乎正在尝试将存储库本身的符号链接您的.git/hooks。我认为 Git 不支持这一点,这可以解释您遇到的错误。

      This answer 建议其他方法,其中大多数建议采用其他方法(将.git/hooks 作为 符号链接)。您可能会找到最适合您的。

      【讨论】:

      • 不是hooks目录,而是具体的文件。例如git-project/Scripts/git-hooks/pre-commit -> git-project/.git/hooks/pre-commit。但是我认为这实际上就是您所说的以及您的链接中建议的内容。我可以将我正在使用的脚本粘贴到我的答案的编辑版本中,以使其更清晰(或者更清楚地表明我没有做我认为我应该做的事情:P)
      猜你喜欢
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2019-08-26
      • 2015-07-31
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多