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

我正在尝试在C#中执行以下操作:

  1. 得到两个分支之间的差异。

  2. 将输出重定向到补丁文件中。

  3. 签出一个新的空分支。

  4. 将补丁文件应用于此新分支。

  5. 添加文件并将此分支提交到远程仓库。

我正在运行的当前git命令:

git checkout branch2

git diff branch1 > delta.patch

git checkout --orphan delta_branch 

git rm -rf . 

git apply delta.patch

git add -A  

git commit -m "Adding a temporary branch.." 

git push -u origin delta_branch

虽然从git bash可以正常工作,但是从C#执行它时却不能,我得到了diff命令的以下消息:


git diff branch1 > delta.patch

http://img1.mukewang.com/60aa2ee60001ef6c06740073.jpg

慕姐8265434
浏览 467回答 1
1回答

慕桂英4014372

您不能简单地重定向到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...}
打开App,查看更多内容
随时随地看视频慕课网APP