我正在学习和调整与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)
我如何遇到这种情况:
流量
在本地调整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返回上面显示的消息。
答案 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克隆-服务器上没有仓库,您可以推送到它。