我想将.git/hooks/pre-receive
挂钩添加到master / remote分支但是.git /将不受源代码控制。如何将.git/hooks/pre-receive
复制到主分支(在Linux上配置服务器存储库)?
是否有任何配置设置可以自动忽略.git
?我可以改变吗?
.git/hooks/pre-receive
应该只存在于主存储库中,因为执行git push
时服务器会触发它。
答案 0 :(得分:0)
由于安全问题,在git历史记录中不管理挂钩(假设您在Internet中克隆了一个随机项目,该项目在post-checkout挂钩中包含恶意代码...)。 它是由设计和我设置的。害怕它可能无法覆盖。
如果您需要在服务器中激活预接收挂钩,则需要主动配置它(连接到服务器或使用服务器提供的接口,如果有的话)
答案 1 :(得分:0)
如何将.git / hooks / pre-receive复制到master分支(在linux上配置服务器存储库)?
登录linux服务器。将文件复制到适当的目录。如果您需要传输文件,请使用您为此目的设置的任何机制(ftp,ssh,文件服务器等)。
是否有任何配置设置可以自动忽略.git?我可以改变吗?
没有。按设计,推/拉不共享.git
文件夹的任何部分。这个钩子包括在内,这绝对是故意的。它不是配置;这是git的设计。
你可能会以某种方式通过玩弄“git目录”环境变量来混淆git,但如果有人以某种方式显示它写入服务器的元数据目录,它将被视为漏洞 - 而不是配置更改 - 很快就会修补git以防止它。 (它可能已经无法完成,但是谁知道在系统的边缘可能会发现什么......?)
.git / hooks / pre-receive应该只存在于主存储库中,因为这是在执行git push时由服务器触发的
哪个是你不能push
到服务器的原因;这意味着它也存在于客户端上。
顺便说一句,源存储库通常称为origin
,而不是master
。 master
是指默认分支的默认名称,并存在于所有存储库中。虽然这都是可配置的,但建议使用传统方式的术语来清楚地理解通信。