从C#函数运行git命令

我的C#代码在检测到跟踪文件中的更改时如何运行git命令? 我正在为此目的编写一个VisualStudio / C#控制台项目。

我是.NET环境的新手,目前正致力于将自动GIT提交集成到文件夹中。 我需要在已知文件夹上自动提交任何更改/添加/删除,并将其推送到git remote。 任何指导赞赏。 谢谢。

这是我的,最后一个是我需要一些指导:

  1. Git存储库最初设置在具有正确忽略文件(已完成)的文件夹上。
  2. 我正在使用C#FileSystemWatcher来捕获所述文件夹的任何更改(完成)。
  3. 一旦我的项目检测到更改,它就需要提交并推送这些更改(待处理)。

项目需要运行的暂定命令:

git add -A git commit "explanations_of_changes" git push our_remote 

注意:此代码(没有用户交互)将是唯一承诺此repo的实体,因此我不担心冲突并相信此流程将起作用。

如果要在C#中执行此操作,则可以在检测到文件更改时通过Process.Start调用外部git命令

 string gitCommand = "git"; string gitAddArgument = @"add -A" ; string gitCommitArgument = @"commit ""explanations_of_changes"" " string gitPushArgument = @"push our_remote" Process.Start(gitCommand, gitAddArgument ); Process.Start(gitCommand, gitCommitArgument ); Process.Start(gitCommand, gitPushArgument ); 

不是最好的解决方案,但它适用于C#

我意识到这是一个老问题,但我想添加我最近遇到的解决方案,以帮助未来的人。

PowerShell类提供了一种与git交互的简便方法。 这是.NET中System.Management.Automation命名空间的一部分。

 string directory = ""; // directory of the git repository using (PowerShell powershell = PowerShell.Create()) { // this changes from the user folder that PowerShell starts up with to your git repository powershell.AddScript(String.Format(@"cd {0}", directory); powershell.AddScript(@"git init"); powershell.AddScript(@"git add *"); powershell.AddScript(@"git commit -m 'git commit from PowerShell in C#'"); powershell.AddScript(@"git push"); Collection results = powershell.Invoke(); } 

在我看来,这比使用Process.Start()方法更清晰,更好。 您可以通过编辑添加到powershell对象的脚本来将其修改为您的特定需求。

另一种方法是使用您的项目设置Grunt和TaskRunner。

Grunt应该能够提供检测项目中文件夹(或文件夹)更改的自动化,并执行相应的git命令来提交它。

Task Runner允许您从Visual Studio中初始化和运行Grunt。

Visual Studio团队表示Task Runner将集成到Visual Studio的未来版本中,因此这可能是一个长期的解决方案。

注意:评论中已经提到过,但我觉得再次值得一提的是,无论何时将文件保存到存储库,自动提交都不是最佳做法。 您希望推入function/primefaces代码更改,而不是简单的文本更改。 自动提交需要您自担风险。

软件包管理器控制台是Powershell控制台。 所以你可以从那里运行你的git命令。