为什么.git/hooks有时在克隆回购协议中缺失?
我有几个(Git for Windows 2.6.2 64位)repo是我用相同的方法创建和启动的:为什么.git/hooks有时在克隆回购协议中缺失?,git,githooks,atlassian-sourcetree,Git,Githooks,Atlassian Sourcetree,我有几个(Git for Windows 2.6.2 64位)repo是我用相同的方法创建和启动的: 在git Bash中运行git init--bare.git 使用SourceTree克隆新的repo 添加和提交初始文件(通过SourceTree或EGit) 废话,废话,废话 在尝试向这些克隆的repo添加一个公共的post-commithook时,我注意到其中只有一些具有.git/hooks目录。为什么? 我搜索了有关缺少.git/hook目录的问题/答案,但没有找到关于这方面或更广泛的内
git init--bare.git
post-commit
hook时,我注意到其中只有一些具有.git/hooks
目录。为什么?
我搜索了有关缺少.git/hook
目录的问题/答案,但没有找到关于这方面或更广泛的内容。repo初始化确保(.Git/hooks/
).sample
文件默认可执行的Git文档;但我真的找不到任何东西来解释为什么我克隆的回购协议有时包含.git/hooks
,有时不包含
有人能解释一下这里的因果关系吗?谢谢。git存储库中定义的钩子始终位于该存储库的本地。它们不是git历史的一部分,在克隆、获取或推送时不会被传输 因此,只要用钩子克隆现有的回购协议,克隆的回购协议就不会有上游钩子。您必须手动将它们添加到克隆的存储库中
解释一些帮助您实现这一点的选项。因为在克隆等过程中不会传输git钩子。因此,很多时候钩子都是在单独的目录中定义的(在未克隆或传输的.git目录之外) 团队项目和开源回购协议的情况大多如此。因此,他们可能有一些脚本(例如在他们的
Makefile
中),这些脚本正在删除本地.git/hooks
,并添加一些包含这些hooks的其他目录(例如repo根目录中的.githooks
)
这是可能的,因为您可以轻松配置git,将core.hooksPath
配置变量设置为托管挂钩目录,例如:
几年后,我发布了这篇文章 这看起来确实像是一个SourceTree的东西(正如上面Jason的理论)。更具体地说,如果使用SourceTree中的
嵌入式Git
。如果我使用systemgit
(我在Mac上),那么hooks
目录将被创建并填充样本。通过命令行进行克隆也会产生相同的结果。使用嵌入式Git
时,没有挂钩
目录
首选项中的git
选项截图,您可以在这两个选项之间进行选择
谢谢你的解释;你提到的问题也解释得很好。我仍然想知道的是,一些克隆中的
.git/hooks
目录来自何处,如果我按照相同的过程创建并开始使用每个克隆,为什么.git/hooks
“存在/不存在在克隆中并不一致。您找到了对此的解释吗?我刚刚遇到了这个问题。从Bitbucket服务器克隆存储库时缺少git/hooks。我想知道这是否是SourceTree缺陷。