如果git只安装在我的用户上,如何通过git部署新代码? 情景 我可以访问这个旧的linux服务器,它不再接收任何类型的更新。只有断断续续。服务器上没有安装git,所以我在~/opt/bin的用户上本地安装了它。我将目录添加到我的路径中,为了在服务器上进行开发,我可以用git做几乎所有需要做的事情 我决定在我的工作站上做我的开发,并推动生产代码准备就绪,这将是很酷的 我在服务器上设置了一个空存储库,创建了一个带有签出-f的post-receive文件到我的GIT_-WORK_树,看起来一切都相应地设置好了 问题

如果git只安装在我的用户上,如何通过git部署新代码? 情景 我可以访问这个旧的linux服务器,它不再接收任何类型的更新。只有断断续续。服务器上没有安装git,所以我在~/opt/bin的用户上本地安装了它。我将目录添加到我的路径中,为了在服务器上进行开发,我可以用git做几乎所有需要做的事情 我决定在我的工作站上做我的开发,并推动生产代码准备就绪,这将是很酷的 我在服务器上设置了一个空存储库,创建了一个带有签出-f的post-receive文件到我的GIT_-WORK_树,看起来一切都相应地设置好了 问题,git,shell,deployment,ssh,non-interactive,Git,Shell,Deployment,Ssh,Non Interactive,当我尝试推送我的主分支时,出现以下错误: sh: git-receive-pack: command not found fatal: The remote end hung up unexpectedly 我知道为什么会这样。我的SSH上的$PATH只看到/usr/bin:/bin:/usr/sbin:/sbin 我的用户是使用/bin/sh shell安装的,因此不能使用.profile/.bashrc/.bashprofile 我也不能使用.ssh/environment,因为我的P

当我尝试推送我的主分支时,出现以下错误:

 sh: git-receive-pack: command not found
 fatal: The remote end hung up unexpectedly
我知道为什么会这样。我的SSH上的$PATH只看到
/usr/bin:/bin:/usr/sbin:/sbin

我的用户是使用/bin/sh shell安装的,因此不能使用.profile/.bashrc/.bashprofile

我也不能使用.ssh/environment,因为我的
PermitUserEnvironment
设置为no

我试图创建一个hooks/pre-receive并在那里设置路径,但也没有成功

你知道如何让SSH看到git并让它工作吗


感谢这就是使用默认ssh守护程序的问题:它强制
路径为不可变值,如果您的工具(此处为“git”)未安装在根管理路径中(如
/usr/bin
),则无法添加它(您可能提出的任何请求,如从
/usr/bin
到git可执行文件的符号链接,都将被视为安全风险)

我遇到的唯一解决方案是编译自己的ssh(使用自己的帐户运行),以适应工具的本地安装。

这就是我在中实现的(除其他工具外,它编译ssh守护程序)。

这就是使用默认ssh守护程序的问题:它将
路径
强制为不可变值,如果您的工具(此处为“git”)未安装在根管理路径(如
/usr/bin
)中,则无法添加它(您可能提出的任何请求,如从
/usr/bin
到git可执行文件的符号链接,都将被视为安全风险)

我遇到的唯一解决方案是编译自己的ssh(使用自己的帐户运行),以适应工具的本地安装。
这就是我在中实现的(其中包括编译ssh守护进程的其他工具)。

我找到了它

第二个解决方案涉及将路径添加到git上载路径 以及[remote]下本地.git/config文件中的git recieve路径 “origin”]。这是最简单的方法,因为您只需这样做 换一次

[remote "origin"]
url = <repo address>
fetch = +refs/heads/*:refs/remotes/origin/*
uploadpack = <path to git-upload-pack>
receivepack = <path to git-receive-pack>
[远程“源站”]
url=
fetch=+refs/heads/*:refs/remotes/origin/*
上传包=
接收包=
我找到了

第二个解决方案涉及将路径添加到git上载路径 以及[remote]下本地.git/config文件中的git recieve路径 “origin”]。这是最简单的方法,因为您只需这样做 换一次

[remote "origin"]
url = <repo address>
fetch = +refs/heads/*:refs/remotes/origin/*
uploadpack = <path to git-upload-pack>
receivepack = <path to git-receive-pack>
[远程“源站”]
url=
fetch=+refs/heads/*:refs/remotes/origin/*
上传包=
接收包=

谢谢你,伙计,但是我找到了一个可以让它工作的配置:)谢谢你,伙计,但是我找到了一个可以让它工作的配置:)