为什么80%的码农都做不了架构师?>>>   

今天给我们自己的发布系统增加一个新建分支的功能,操作比较简单,但是使用php执行shell命令的时候总是无法push分支到远程,但是登陆服务器执行却是可以的

新建分支命令如下

git fetch --all
git checkout -b pmt_20160624_v10.7.4 origin/master
git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4

php大概代码如下,执行这个php文件是定时执行的

<?php$cmd = ["cd /data/xxx","git fetch --all","git checkout -b pmt_20160624_v10.7.4 origin/master","git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4"
];
exec( implode(" ; ",$cmd),$outputs );
var_dump( $outputs );

奇怪的是 分支创建成功了,但是push 去没有成功,打印出来的内容也没有提示什么错误,排除了半天没查到原因

开始我在$cmd中加了一个调试命令,ssh git@xxxxx,我是怀疑没有加入ssh key 导致的

$ ssh git@xxxxx
PTY allocation request failed on channel 0
Welcome to GitLab, vincent!
Connection to xxxxx closed.

但是通过php执行exec执行出来的命令提示是

Welcome to GitLab, robot!

发现 是不同的用户,一个是vincent,一个是robot,其实这个时候如果比较敏感的就知道什么问题了,后来我也是想到这点才解决的

后来我想办法将 push的命令提示打印出来了

git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4  --progress > /tmp/release.log 2>&1

提示错误信息如下

GitLab: You are not allowed to push code to this project.
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.

我猛然想起来了,我是没有给robot账号 权限哇,我们git使用gitlab搭建的

重点回顾

git把自己的输出 放到了  STDERR not STDOUT ,所以需要重定向下,才有了如下命令

git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4  --progress > /tmp/release.log 2>&1

原文地址: php 通过exec 创建git分支失败
标签: exec    git    php    push

智能推荐

  • 【Git 使用笔记】第一部分:安装git 和 使用git
  • 【Git 使用笔记】第二部分:基本命令 和 单分支开发
  • Nginx return 关键字配置小技巧
  • phpexcel 内存溢出 优化
  • 【Composer】实战操作二:自己创建composer包并提交

转载于:https://my.oschina.net/54php/blog/690776

php 通过exec 创建git分支失败相关推荐

  1. 【Git技术】IDEA配置git及对项目创建git分支的方法

    目录 1. 常见错误 2.IDEA配置git 3. 克隆GitHub上的项目源码 4. 创建git分支dev 1. 常见错误 Git安装在本地.并建立本地仓库且与远程Github账号关联后,想要与ID ...

  2. 如何新建分支上传_如何创建git分支?

    正所谓众口难调,写代码的时候,有可能会同时有两个领导让你分别做一份作品提交给他们两个. Q:那我要怎么在写代码的时候实现两头并进呢? A:这里就需要使用到git分支. Q:什么是branch? A:b ...

  3. 使用当前更改创建Git分支

    我开始在我的主分支上工作,认为我的任务很简单. 过了一会儿,我意识到这将需要更多的工作,我想在一个新的分支中完成所有这些工作. 如何创建一个新分支并随身携带所有这些更改而不会弄脏主人 ? #1楼 如果 ...

  4. idea创建git分支

    此时只是在本地创建好了分支,修改源代码后add,commit将本地分支提交到远程仓库 分支已创建,其它成员此时就可以从git拉分支 转载于:https://www.cnblogs.com/qianqi ...

  5. IDEA 创建git 分支 拉取分支

    此时只是在本地创建好了分支,修改源代码后add,commit将本地分支提交到远程仓库 分支已创建,其它成员此时就可以从git拉分支

  6. idea创建git分支开发

    1.创建分支,输入名称.这里分支起名为:dev 2. 创建好后,自动切换分支 3.即可在次基础上开发.提交后,push到dev即可 4.分支切换.点击分支---checkout即可

  7. IDEA创建 Git 分支

    1.选中项目后右键(如果右键没有 Git,则 VCS–>Enable Version Control Integration 即可) 2.选择新建分支 3.输入分支名称,并勾选 Checkout ...

  8. IDEA创建GIT分支并提交

    新建分支 设置分支名称 合并代码Merge和提交

  9. xcode9创建git分支

    只有图

最新文章

  1. #实现互联网聊天_局域网内两台电脑如何实时语音聊天通话
  2. 国外厂商在行业客户上输单的原因
  3. 纪委计算机管理制度,纪委监察处信息管理办法
  4. oracle中间件微信公众号,对TP5.1中间件融合微信公众号代码的优化
  5. halcon学习笔记——(5)HDevelop language(异常处理)
  6. vue-cli 各文件夹的用途
  7. linux的php优化,linux优化转载
  8. 寄存器---汇编学习笔记
  9. Android:学习笔记(一)
  10. python小学生口算题生成器_小学数学题出题神器
  11. 项目属性--生成事件--后期生成事件命令行
  12. Apache Kylin原理学习之Cube的创建与Build
  13. php 自动处理小图的代码,php对图像的各种处理函数代码小结
  14. MAC 迅雷最新版无限重启BUG的解决方法
  15. JavaScript生成PDF
  16. 网站关键词密度多少会比较合适?
  17. 武清鸿蒙幼儿园,天津十大贵族学校,土豪才上的起的学校!
  18. 论文会议推荐到计算机研究与发展,计算机研究与发展类论文参考文献 计算机研究与发展核心期刊参考文献有哪些...
  19. pandas计算方差,平均值,分位数,中位数
  20. GameMaker如何导入JSON文件

热门文章

  1. 报错——StackOverflowError
  2. 破解.NET 2.0配置之谜(一)
  3. Java NIO系列教程(六) Selector
  4. 看初中生如何高薪就业
  5. GdiPlus[6]: 五种画刷总览
  6. JQuery 1.32 DatePicker 增强版
  7. 自己动手安装ARM交叉编译工具链
  8. 135编辑器 html,135编辑器,微信图文编辑器,微信图文美化编辑器,格式多方便的图文编辑-...
  9. Python实现图片识别加翻译,高薪必备技能
  10. step在c语言中什么作用,C语言step-by-step(二)(数据类型)