前言:我觉得一些基本条件还是要具备的,比如确保你安装的git已经添加到了windows环境变量。如果你是linux,自行修正代码。

1、设置git用户名和邮箱【可跳过】

  1. //2>&1 是为了把错误或者执行结果存入变量中
  2. system('git config user.email "a@b.com" 2>&1', $a);
  3. system('git config user.name "贤大" 2>&1', $b);

2、查看本地发现修改的文件

  1. //git status
  2. chdir('项目目录');
  3. exec("git status", $data);
  4. var_dump($data);


3、分析第2步返回的结果,取需要的文件暂存,最后再提交所选的文件

  1. foreach ($data as $dat) {
  2. //......分析代码
  3. $file = '';
  4. exec("git add $file", $info); //$info里面返回暂存信息
  5. }
  6. }
  7. $commitStr = 'git commit ' . '你暂存的所有文件,用,分隔开' . ' -m "提交说明';
  8. exec($commitStr);

4、代码push到线上

  1. system('git push origin master 2>&1', $d);
  2. //输出$d,你会发现报错,如果你和我一样,用的是ssh方式连接git服务器,请像我一样设置

//输出$d,你会发现报错,如果你和我一样,用的是ssh方式连接git服务器,请像我一样设置

  1. system('git config core.sshCommand "ssh -i ~/.ssh/id_rsa " 2>&1', $c);
  2. var_dump($c);
  3. system('git push origin master 2>&1', $d);
  4. //一定要打印$c内容

But:在windows上,PHP访问的~并不是你当前登录的电脑用户的目录
image.png
打印$c的内容,他会提示你文件不存在,你只需要把用户目录下的id_rsa私钥复制你正确的目录就可以了。

一般在C盘\windows\system32下面:
image.png
当git采用这个本地的密钥去连接的时候,就成功了。

如果你不懂git ssh key配置,可以参考我网上随便找的这篇文章:
https://blog.csdn.net/lqlqlq007/article/details/78983879