为了账号安全,请及时绑定邮箱和手机立即绑定

致命:直接从C#执行git diff时模棱两可的参数'>'错误

致命:直接从C#执行git diff时模棱两可的参数'>'错误

C#
慕姐8265434 2021-05-11 21:27:23
我正在尝试在C#中执行以下操作:得到两个分支之间的差异。将输出重定向到补丁文件中。签出一个新的空分支。将补丁文件应用于此新分支。添加文件并将此分支提交到远程仓库。我正在运行的当前git命令:git checkout branch2git diff branch1 > delta.patchgit checkout --orphan delta_branch git rm -rf . git apply delta.patchgit add -A  git commit -m "Adding a temporary branch.." git push -u origin delta_branch虽然从git bash可以正常工作,但是从C#执行它时却不能,我得到了diff命令的以下消息:git diff branch1 > delta.patch
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您不能简单地重定向到Process.Start信息中的文件。那是一个shell操作,而不是您可以简单地调用的东西。相反,您需要自己阅读git应用程序的标准输出。例如:


ProcessStartInfo startInfo = new ProcessStartInfo();

startInfo.UseShellExecute = false;


startInfo.RedirectStandardInput = true;

startInfo.RedirectStandardOutput = true;

startInfo.RedirectStandardError = true;


startInfo.FileName = "git.exe";

startInfo.Arguments = "diff branch1";


Process process = new Process();

process.StartInfo = startInfo;

process.Start();


while ((line = process.StandardOutput.ReadLine()) != null)

{

     // This is the output you're reading...

}


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 466 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信