gpt4 book ai didi

git - 将现有项目推送到裸仓库

转载 作者:太空狗 更新时间:2023-10-29 14:47:00 25 4
gpt4 key购买 nike

我一直在本地使用 git 和 laravel 做一个项目。我最终决定向我们的服务器添加一个裸仓库,以便推送更改和自动部署。

我确定我做错了什么,因为我对使用 git 很陌生。当我进行推送时,出现以下错误:

stdin: is not a tty
bash: git-receive-pack: command not found
fatal: Could not read from remote repository

Please make sure you have the correct access rights and the repository exists.

这是我使用的过程 - 请记住,项目存储库最初是从 laravel 克隆的,我创建了自己的 master 分支,并且存在一些推送。我也已经设置了所有 ssh 日志记录。

  1. 通过ssh登录
  2. 创建目录:mkdir public_html.git
  3. 更改目录:cd public_html.git
  4. 创建存储库:git init --bare
  5. 添加了一个接收后 Hook - 我在测试项目中验证了它的工作
  6. 移回本地机器
  7. 添加了一个新的远程:git remote add www user@0.0.0.0:public_html.git
  8. 新建一个分支:git checkout -b develop
  9. 尝试推送:git push www

对此的大部分研究都提到检查 git/config 文件,但所有这些似乎都是正确的。

最佳答案

看起来 git-receive-pack 不在用于推送到存储库的用户配置的路径上。当您通过 ssh 推送到 git 存储库时,git 将使用 ssh 在执行推送的用户帐户下的远程服务器上执行命令。这些命令,例如 git-receive-pack,必须在服务器上该用户的路径上可用。要对此进行诊断,我将从执行命令开始

ssh user@0.0.0.0 which git-receive-pack

您几乎肯定会收到命令未找到错误。接下来你可以试试

ssh user@0.0.0.0 'echo $path' # Note the single quotes.

这将向您显示用户在远程服务器上的路径,并可能帮助您找出问题所在。请注意 ssh 手册页中的行:

ssh ... [user@]hostname [command]

...

If command is specified, it is executed on the remote host instead of a login shell.

这可能是一个微妙但重要的区别,因为它意味着使用 ssh user@0.0.0.0 创建的远程登录 shell 可能不会看到与 运行的命令相同的 shell 环境ssh user@0.0.0.0 一些远程命令This answer解释了这对 bash shell 是如何工作的,其他人的行为类似。

关于git - 将现有项目推送到裸仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21435912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com