通过Git对部署进行完全控制,以Github私有仓库为主

时间:2020-06-27 10:07:57

标签: git github deployment version-control web-deployment

我正在学习和调整与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)

我如何遇到这种情况:

  • 在github上创建存储库
  • 包括通过cpanel从我的服务器生成的部署密钥
  • 本地计算机上的Git克隆
  • 通过SSH在服务器上进行Git克隆
  • 将服务器作为测试添加到远程仓库

流量

  • 在本地调整master,将其推送到github和server都可以正常工作。但是我的理解是,Git的功能是为“功能”创建一个分支>测试它>将其合并到主服务器。

  • 我在本地计算机上建立了一个名为Feature的分支

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

  • 我必须“签出”新分支才能在服务器上显示文件,因此我通过SSH到服务器并签出新分支:

    git checkout feature

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

打破流程

但是现在我的流程中断了。在服务器上签出功能分支后,我无法将调整后的分支推送到远程测试中。 Git返回上面显示的消息。

1 个答案:

答案 0 :(得分:1)

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

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

"AGA"

使用Git 2.4或更高版本using a push-to-deploy表示,以便允许git push直接更新检出的工作树。
通常,您宁愿推送到裸仓库:请参阅“ What is a bare repository and why would I need one?”,并使用post-receive hook with a checkout
也就是说:位于in the discussion中的“ cd /path/to/cloned/repo git config --local receive.denyCurrentBranch updateInstead ”文件夹中的名为chmod 775的可执行文件(post-receive)。
myrepo.git/hooks是git克隆-服务器上没有仓库,您可以推送到它。