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

如何将.git/文件更改推送到远程(服务器)存储库,git,githooks,Git,Githooks,我想将.git/hooks/pre-receivehook添加到主/远程分支,但是.git/将不受源代码控制。如何将.git/hooks/pre-receive复制到主分支(服务器存储库在linux上配置) 是否有任何配置设置可自动忽略.git?我能换一下吗 .git/hooks/pre-receive只应存在于主存储库中,因为这是在执行git-push时由服务器触发的。出于安全考虑,在git历史记录中不管理钩子(假设您在Internet上克隆了一个随机项目,其中在签出后钩子中包含恶意代码…)。

我想将
.git/hooks/pre-receive
hook添加到主/远程分支,但是.git/将不受源代码控制。如何将
.git/hooks/pre-receive
复制到主分支(服务器存储库在linux上配置)

是否有任何配置设置可自动忽略
.git
?我能换一下吗


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

出于安全考虑,在git历史记录中不管理钩子(假设您在Internet上克隆了一个随机项目,其中在签出后钩子中包含恶意代码…)。 它是按设计设定的,我担心它可能无法覆盖

如果要求预接收挂钩在服务器中处于活动状态,则需要对其进行主动配置(连接到服务器或使用服务器提供的接口,如果有的话)

如何将.git/hooks/pre-receive复制到主分支(服务器存储库在linux上配置)

登录到linux服务器。将文件复制到适当的目录。如果需要传输文件,请使用为此目的设置的任何机制(ftp、ssh、文件服务器等)

是否有任何配置设置可自动忽略.git?我能换一下吗

否。按设计,
.git
文件夹的任何部分都不会被推/拉共享。其中包含了钩子,这绝对是故意的。它不是配置;这是git的设计

通过以某种方式玩弄“git directory”环境变量,您可能会混淆git,但如果这被显示为以某种方式写入服务器的元数据目录,则它将被视为一种攻击——而不是配置更改——git将很快被修补以防止它。(这可能已经做不到了,但谁知道在一个系统的边缘会发现什么窥探呢…?)

.git/hooks/pre-receive只应存在于主存储库中,因为这是在执行git推送时由服务器触发的

这是一个很好的理由,你不能把它推到服务器上;这意味着它也存在于客户机上


顺便说一句,源存储库通常被称为
origin
,而不是
master
master
指默认分支机构的默认名称,存在于所有回购协议中。尽管这些都是可配置的,但建议以常规方式使用这些术语,以保持通信清晰易懂。

我询问的关于如何放置的可能重复?
。git/hooks/pre-receive
应该在主存储库中,而不必在本地存储库中。我只是询问配置设置,如果有的话。我找不到任何方法将我的钩子添加到服务器。这只是一次设置。我应该可以把它放在server
.git/hooks/
文件夹中。你的服务器设置如何?您使用的是gitlab、bitbucket、github(取决于您的服务器,开发人员提供的解决方案可能会有所不同),还是使用的机器只是包含一个简单的repo?我的服务器设置基于ALM工具(基于UI)。当我转到代码部分时,它会显示除
.git
文件夹之外的所有内容。我需要在
.git/.git/hooks
中添加hook,通常,.git文件夹是隐藏的。您是否在UI中显示隐藏文件夹?谢谢您的帮助和建议。首先,我对服务器端git存储库不太了解,这就是为什么我对此有点困惑的原因。我无法直接复制文件,因为我们有一个基于UI的工具(ALM)来合并代码。当我检查代码时,
.git
不可见。这就是为什么我担心我怎么能复制它。我正在搜索任何可以从本地repo传输的命令(如您所说的ftp、ssh、文件服务器等),但我无法找到它。