解决 "git stash push"无法在C#中存储多个文件

已加入
2020年11月5日
留言内容
9
编程经验
10+
我已经克隆了仓库,并对仓库中的几个文件进行了更改
试图藏起来,请。找到以下代码。
该程序实际上并没有结束,即使在运行15分钟后仍然可以运行。
C#:
流程proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
proc.StartInfo.FileName ="cmd";
string repoFolder = @"cd ""E:\sunflower"""; // Navigate to repo folder
proc.StartInfo.Arguments = " git stash push";  
proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
字符串输出= proc.StandardOutput.ReadToEnd()。Trim();
字符串错误= proc.StandardError.ReadToEnd()。Trim();
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
将来,请将您的代码放入代码标签中。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
您究竟如何导航到第4行的文件夹?还是那行与此处无关的代码?
 
已加入
2020年11月5日
留言内容
9
编程经验
10+
请使用这些行代替上面的行,需要帮助来解决。 15分钟后仍无结果。在proc.WaitForExit();
在Windows 10和Visual Studio 2019上工作

步骤:首先从命令提示符处执行这些手动步骤
  1. 克隆仓库(git clone reponame)
  2. 导航到repo文件夹并对文件进行一些虚拟更改
  3. 使用下面的代码并尝试使git stash push

流程proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
proc.StartInfo.FileName ="cmd";

字符串驱动器= @"cd E:\ Gaming Accessibility \ sunflower"; // git cloned repo存在于E:\ Gaming Accessibility \ sunflower文件夹中。导航到此repo文件夹并//执行git stash push

proc.StartInfo.Arguments =驱动器+" & git stash push";

proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
字符串输出= proc.StandardOutput.ReadToEnd()。Trim();
字符串错误= proc.StandardError.ReadToEnd()。Trim();
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
将来,请将您的代码放入代码标签中。
我不习惯修正您的帖子,因为您懒惰或无能为力地遵循一个简单的请求。张贴到论坛上时,请使用代码标签,否则我下次将关闭您的主题而不会发出警告。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
点击按钮</>在编辑器上,然后将代码粘贴到出现的框中。 [CODE=csharp] code here [/CODE]
 
已加入
2020年11月5日
留言内容
9
编程经验
10+
谢谢!!按照建议放置。您能帮上忙吗?

C#:
流程proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
proc.StartInfo.FileName ="cmd";
string drive = @"cd E:\ Gaming Accessibility \ sunflower"; // git cloned repo存在于E:\ Gaming Accessibility \ sunflower文件夹中。导航到此repo文件夹并//执行git stash push
proc.StartInfo.Arguments =驱动器+" & git stash push";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
字符串输出= proc.StandardOutput.ReadToEnd()。Trim();
字符串错误= proc.StandardError.ReadToEnd()。Trim();
 
由主持人最后编辑:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
不,我很忙,但我相信其他人很快就会来。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
我自愿在此站点上减轻压力并下班休息。我负责将用户票证分配给我,作为我的日常工作。有时间的时候我会回应,因此愿意。
 
已加入
2020年11月5日
留言内容
9
编程经验
10+
很久以前已经解决了这个问题,这是解决方法。

C#:
                    var outputSb = new StringBuilder();
                    var errorSb = new StringBuilder();

                    proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                    proc.StartInfo.RedirectStandardOutput = true;
                    proc.StartInfo.RedirectStandardError = true;
                    proc.StartInfo.UseShellExecute = false;
                    proc.OutputDataReceived += ((sender, stdout) =>
                    {
                        outputSb.Append(stdout.Data);
                    });
                    proc.ErrorDataReceived += ((sender, stdout) =>
                    {
                        errorSb.Append(stdout.Data);
                    });

                    proc.Start();

                    proc.BeginOutputReadLine();
                    proc.BeginErrorReadLine();

                    proc.WaitForExit();

                    output = outputSb.ToString();
                    error = errorSb.ToString();
 
最佳 底部