首页 > 解决方案 > 通过 Git 完全控制以 Github 私有 repo 为主的部署

问题描述

我正在学习和调整集成 Git 的工作流程。我的愿望是能够将我的开发分支从我的本地终端推送到我的测试服务器。一旦我分支,我当前的设置就会给我一个错误。我觉得这不是一个错误,而是 Git 在完成它的工作,而我并不完全理解它。您能否解释为什么会发生这种情况以及如何避免这种情况?

Git“错误”

! [remote rejected] feature -> feature (branch is currently checked out)
error: failed to push some refs to (I hide the ssh server address)

我是如何遇到这种情况的:

流动

git checkout -b feature

git add . git commit -m 'added index.html' git push origin feature (for backup/sync purposes) git push test feature (to be able so see my code working on the test server

我的想法是,从现在开始,我可以在本地处理功能分支 > 提交调整,并且使用简单的推送命令git push test feature,我可以在我的测试服务器上测试代码。

打破流量

但现在我的流程被打破了。在我检查服务器上的功能分支后,我无法将调整后的分支推送到我的远程测试。Git 返回上面显示的消息。

标签: gitgithubdeploymentversion-controlweb-deployment

解决方案


通过 SSH 在服务器上进行 Git 克隆

您仍需要通过 SSH 会话在该服务器上添加:

cd /path/to/cloned/repo
git config --local receive.denyCurrentBranch updateInstead

意思是,使用 Git 2.4 或更高版本,使用 push-to-deploy,以便允许 git push 直接更新签出的工作树。
通常,您宁愿推送到裸存储库:请参阅“什么是裸存储库以及我为什么需要一个? ”,并使用带有 checkout 的 post-receive 钩子
即:一个chmod 775名为 的可执行 () 文件post-receive,位于 " myrepo.git/hooks" 文件夹中,详见讨论
myrepo.git是服务器上你的 repo 的 git clone --bare:你可以推送到它。


推荐阅读