在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们可以在命令行中操作 git,但是作为一名程序员,如果在大量重复的时候还手动敲命令行,那就太笨了。 本文介绍使用 C# 编写一个 .NET 程序来自动化地使用 git 命令行来操作 git 仓库。 这是一篇很基础的入门文章。 最简单的运行 git 命令的代码在 .NET 中,运行一个命令只需要使用 Process.Start("git", "status"); 当然,直接能简写成 允许获得命令的输出对于上节中写的 所以,命令最好要能够获得输出。 而要获得输出,你需要使用 var info = new ProcessStartInfo(ExecutablePath, arguments) { CreateNoWindow = true, RedirectStandardOutput = true, UseShellExecute = false, WorkingDirectory = WorkingDirectory, }; 需要设置至少这四个属性:
实际上如果使用此代码的程序也是一个控制台程序,这句是没有必要的,因为子进程会共用父进程的控制台窗口;但是对于 GUI 程序来说,这句还是很重要的,这可以避免在执行命令的过程中意外弹出一个黑色的控制台窗口出来。
这是一定要设置为
本来这是一个可选设置,不过对于
此属性的详细说明, UseShellExecute 的默认值是 如果有以下需求,那么建议设置此值为
如果你有以下需求,那么建议设置此值为 true 或者保持默认:
这里我们必须指定为 CommandRunner为了方便起见,我将全部运行一个命令的代码封装到了一个 using System; using System.Diagnostics; using System.IO; namespace Walterlv.GitDemo { public class CommandRunner { public string ExecutablePath { get; } public string WorkingDirectory { get; } public CommandRunner(string executablePath, string workingDirectory = null) { ExecutablePath = executablePath ?? throw new ArgumentNullException(nameof(executablePath)); WorkingDirectory = workingDirectory ?? Path.GetDirectoryName(executablePath); } public string Run(string arguments) { var info = new ProcessStartInfo(ExecutablePath, arguments) { CreateNoWindow = true, RedirectStandardOutput = true, UseShellExecute = false, WorkingDirectory = WorkingDirectory, }; var process = new Process { StartInfo = info, }; process.Start(); return process.StandardOutput.ReadToEnd(); } } } 测试与结果以上 var git = new CommandRunner("git", @"D:\Developments\Blogs\walterlv.github.io"); git.Run("add ."); git.Run(@"commit -m ""这是自动提交的"""); 如果需要获得命令的执行结果,直接使用 比如下面我贴了 using System; namespace Walterlv.GitDemo { class Program { static void Main(string[] args) { Console.WriteLine("walterlv 的自动 git 命令"); var git = new CommandRunner("git", @"D:\Developments\Blogs\walterlv.github.io"); var status = git.Run("status"); Console.WriteLine(status); Console.WriteLine("按 Enter 退出程序……"); Console.ReadLine(); } } } 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论