怎么在c#/net中利用git命令行操作git仓库

  介绍

这篇文章给大家介绍怎么在c#/>恢欣胓it命令行操作git仓库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>最简单的运行git命令的代码

在。NET中,运行一个命令只需要使用<代码>的过程。开始开启一个子进程就好了。于是要运行一个git <代码> 命令,我们其实只需要这句足以:

Process.Start (“git",,“status");

当然,直接能简写成<代码> git> git。exe> C: \程序文件\ Git \ mingw64 \ bin \ Git。exe>

<强>允许获得命令的输出

对于上节中写的<代码>的过程。开始> 命git地位令只是获得仓库当前的状态,这个命令完全不影响仓库,只是为了看状态的。

所以,命令最好要能够获得输出。

而要获得输出,你需要使用<代码> ProcessStartInfo> var  info =, new  ProcessStartInfo (ExecutablePath,参数)   {=,CreateNoWindow ,真的,=,RedirectStandardOutput ,真的,=,UseShellExecute ,假的,=,,WorkingDirectory  WorkingDirectory,   };

需要设置至少这四个属性:

<李>

<代码> CreateNoWindow 表示不要为这个命令单独创建一个控制台窗口

实际上如果使用此代码的程序也是一个控制台程序,这句是没有必要的,因为子进程会共用父进程的控制台窗口;但是对于GUI程序来说,这句还是很重要的,这可以避免在执行命令的过程中意外弹出一个黑色的控制台窗口出来。

<李>

<代码> RedirectStandardOutput 进行输出的重定向

这是一定要设置为真正<代码> 的属性,因为我们希望拿到命令的输出结果。

<李>

<代码> WorkingDirectory 设置工作路径

本来这是一个可选设置,不过对于<代码> git代码命令来说,一般都是对一个已有的git仓库进行操作,所以当然要指定一个合理的git仓库了。

<李>

<代码> UseShellExecute 设置为<代码>假表示不要使用<代码> ShellExecute 函数创建进程

此属性的详细说明,

UseShellExecute的默认值是<代码>

如果有以下需求,那么建议设置此值为假:<代码>

<李>

需要明确执行一个已知的程序

<李>

需要重定向输入和输出

如果你有以下需求,那么建议设置此值为真或者保持默认:

<李>

需要打开文档,媒体,网页文件等

<李>

需要打开Url

<李>

需要打开脚本执行

<李>

需要打开计算机上环境变量中路径中的程序,

这里我们必须指定为<代码>假>

<强> CommandRunner

为了方便起见,我将全部运行一个命令的代码封装到了一个<代码> CommandRunner> using 系统;   using  System.Diagnostics;   using 先;      namespace  Walterlv.GitDemo   {   public  class  CommandRunner   ,{   public 才能string  ExecutablePath {,得到;}   public 才能string  WorkingDirectory {,得到;}      public 才能;CommandRunner (string  executablePath, string  workingDirectory =, null)   {才能   ,,ExecutablePath =, ExecutablePath  ? ?, throw  new  ArgumentNullException (nameof (executablePath));   ,,WorkingDirectory =, WorkingDirectory  ? ?, Path.GetDirectoryName (executablePath);   ,,}      public 才能;string 运行(string 参数)   {才能   ,,var  info =, new  ProcessStartInfo (ExecutablePath,参数)   ,,{   ,,,CreateNoWindow =,真的,   ,,,RedirectStandardOutput =,真的,   ,,,UseShellExecute =,假的,   ,,,WorkingDirectory =, WorkingDirectory,   ,,};   ,,var  process =, new 过程   ,,{   ,,,StartInfo =,信息,   ,,};   ,,process.Start ();   ,,return  process.StandardOutput.ReadToEnd ();   ,,}   ,}   }

怎么在c#/net中利用git命令行操作git仓库