【发布时间】:2014-01-29 15:48:53
【问题描述】:
我一直在使用 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 日志记录。
- 通过 ssh 登录
- 已创建目录:
mkdir public_html.git - 更改目录:
cd public_html.git - 创建了回购:
git init --bare - 添加了一个接收后挂钩 - 我在测试项目中验证了该挂钩
- 移回本地机器
- 添加了一个新的遥控器:
git remote add www user@0.0.0.0:public_html.git - 新建了一个分支:
git checkout -b develop - 尝试推送:
git push www
对此进行的大多数研究都提到了检查 git/config 文件,但所有这些似乎都是正确的。
【问题讨论】:
-
检查服务器上目录的权限。在您的 git 远程 URL 中指定的用户必须对服务器上的该目录具有读/写权限。其次,您创建了一个本地分支,但在您的推送命令中,您没有告诉 Git 要推送哪些分支。相反,你想要:
git push www -u develop -
组和所有者设置为用户。我在以该用户身份通过 ssh 登录时创建了它。权限是 775,这似乎足够了。我的理解是,如果你从 git push 中省略分支,它将使用当前分支头。我的活动分支是开发, git push www 应该推送开发分支。我确实注意到您有一个 -u 标志...我在文档中没有看到。