如何将.git / files更改推送到远程(服务器)存储库

时间:2018-05-29 09:35:44

标签: git githooks

我想将.git/hooks/pre-receive挂钩添加到master / remote分支但是.git /将不受源代码控制。如何将.git/hooks/pre-receive复制到主分支(在Linux上配置服务器存储库)?

是否有任何配置设置可以自动忽略.git?我可以改变吗?

.git/hooks/pre-receive应该只存在于主存储库中,因为执行git push时服务器会触发它。

2 个答案:

答案 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,而不是mastermaster是指默认分支的默认名称,并存在于所有存储库中。虽然这都是可配置的,但建议使用传统方式的术语来清楚地理解通信。