手机版

C#/ NET使用git命令行操作git仓库

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

我们可以在命令行上操作git,但是作为一个程序员,当重复很多次时,手动键入命令行是太愚蠢了。

介绍了如何用C#编写一个. NET程序,利用git命令行自动操作git仓库。

这是一篇非常基础的介绍性文章。

最简单的运行 git 命令的代码

In。NET,要运行一个命令,您只需要使用Process。开始启动子流程。所以要运行git命令,我们只需要这句话就够了:

流程。开始(' git ',' status ');当然,它可以直接缩写为git,因为git.exe在我的环境变量中,一般开发人员在安装Git客户端时会自动将这个命令添加到环境变量中。如果没有,则需要使用完整路径c: \程序文件\ git \ mingw64 \ bin \ git.exe,但每个人的路径可能不一样,所以不可靠。

允许获得命令的输出

至于流程。开始写在前一节,你一眼就能看出它是完全无用的代码。因为git status命令只获取仓库的当前状态,所以这个命令根本不影响仓库,而只是查看状态。

因此,命令最好获得输出。

要获得输出,您需要使用ProcessStartInfo来指定如何启动一个进程。

var info=new ProcessStartInfo(executableepath,参数){ CreateNoWindow=true,RedirectStandardOutput=true,UseShellExecute=false,working directority=working directority,};至少需要设置这四个属性:

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

RedirectStandardOutput重定向输出。这是一个必须设置为true的属性,因为我们想要获得命令的输出结果。

WorkingDirectory设置工作路径原本是一个可选的设置,但是对于git命令来说,一般是操作一个现有的git仓库,所以需要指定一个合理的git仓库。

将UseShellExecute设置为false表示不应该使用ShellExecute函数来创建此属性的详细描述。

UseShellExecute的默认值为真。

如果存在以下要求,建议将该值设置为false:

需要显式执行已知程序并重定向输入和输出。如果您有以下要求,建议将该值设置为true或保留默认值:

需要打开文档、媒体、网页文件等。需要打开网址需要打开脚本执行需要在计算机环境变量的路径中打开程序。我们必须在这里指定false,因为如果我们想要重定向输出,这是唯一的有效值。顺便说一下,如果没有设置此属性,默认值为真。

CommandRunner

为了方便起见,我将运行命令的所有代码封装到一个CommandRunner类中。

使用系统;使用系统。诊断;使用系统IO;命名空间沃尔瑟夫.git demo { public class CommandRunner { public string可执行路径{ get}公共字符串工作目录{ get}公共命令隧道(字符串可执行部分,字符串工作目录=null){可执行路径=可执行路径?抛出新的argumentNullException(executable path的名称));工作目录=工作目录?路径GetDirectoryName(可执行路径);}公共字符串运行(字符串参数){ var info=new ProcessStartInfo(可执行部分,参数){ CreateNoWindow=true,RedirectStandardOutput=true,UseShellExecute=false,工作目录=工作目录,};var Process=新流程{ StartInfo=info,};过程start();返回过程标准输出。ReadToEnd();} }}

测试与结果

以上CommandRunner命令的使用非常简单,新出来之后,得到一个可以用来执行命令的实例,然后每次执行调用奔跑方法传入参数即可。

var git=new CommandRunner('git ',@ ' d : \ Developments \ Blogs \ Walter LV。github。io’);蠢货。运行('添加');蠢货。运行(@“commit-m”)这是自动提交的''');如果需要获得命令的执行结果,直接使用奔跑方法的返回值即可。

比如下面我贴了主要的函数的完整代码,可以输出我仓库的当前状态:

使用系统;命名空间沃尔瑟夫.git演示{ class Program { static void Main(string[]args){ Console .WriteLine('walterlv的自动饭桶命令');var git=new CommandRunner('git ',@ ' d : \ Developments \ Blogs \ Walter LV。github。io’);定义变量状态=git .运行('状态');控制台WriteLine(状态);控制台WriteLine(“”按进入退出程序……');控制台ReadLine();} } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:C#/ NET使用git命令行操作git仓库是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。