<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        C#/.NET使用git命令行來操作git倉庫的方法示例

        來源:懂視網 責編:小采 時間:2020-11-27 22:34:39
        文檔

        C#/.NET使用git命令行來操作git倉庫的方法示例

        C#/.NET使用git命令行來操作git倉庫的方法示例:我們可以在命令行中操作 git,但是作為一名程序員,如果在大量重復的時候還手動敲命令行,那就太笨了。 本文介紹使用 C# 編寫一個 .NET 程序來自動化地使用 git 命令行來操作 git 倉庫。 這是一篇很基礎的入門文章。 最簡單的運行 git 命令的代碼 在
        推薦度:
        導讀C#/.NET使用git命令行來操作git倉庫的方法示例:我們可以在命令行中操作 git,但是作為一名程序員,如果在大量重復的時候還手動敲命令行,那就太笨了。 本文介紹使用 C# 編寫一個 .NET 程序來自動化地使用 git 命令行來操作 git 倉庫。 這是一篇很基礎的入門文章。 最簡單的運行 git 命令的代碼 在

        我們可以在命令行中操作 git,但是作為一名程序員,如果在大量重復的時候還手動敲命令行,那就太笨了。

        本文介紹使用 C# 編寫一個 .NET 程序來自動化地使用 git 命令行來操作 git 倉庫。

        這是一篇很基礎的入門文章。

        最簡單的運行 git 命令的代碼

        在 .NET 中,運行一個命令只需要使用 Process.Start 開啟一個子進程就好了。于是要運行一個 git 命令,我們其實只需要這句足以:

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

        當然,直接能簡寫成 git 是因為 git.exe 在我的環境變量里面,一般開發者在安裝 Git 客戶端的時候,都會自動將此命令加入到環境變量。如果沒有,你需要使用完整路徑 C:\Program Files\Git\mingw64\bin\git.exe 只是每個人的路徑可能不同,所以這是不靠譜的。

        允許獲得命令的輸出

        對于上節中寫的 Process.Start ,你一眼就能看出來這是完全沒有用的代碼。因為 git status 命令只是獲得倉庫當前的狀態,這個命令完全不影響倉庫,只是為了看狀態的。

        所以,命令最好要能夠獲得輸出。

        而要獲得輸出,你需要使用 ProcessStartInfo 來指定如何啟動一個進程。

        var info = new ProcessStartInfo(ExecutablePath, arguments)
        {
         CreateNoWindow = true,
         RedirectStandardOutput = true,
         UseShellExecute = false,
         WorkingDirectory = WorkingDirectory,
        };

        需要設置至少這四個屬性:

      1. CreateNoWindow 表示不要為這個命令單獨創建一個控制臺窗口
      2. 實際上如果使用此代碼的程序也是一個控制臺程序,這句是沒有必要的,因為子進程會共用父進程的控制臺窗口;但是對于 GUI 程序來說,這句還是很重要的,這可以避免在執行命令的過程中意外彈出一個黑色的控制臺窗口出來。

      3. RedirectStandardOutput 進行輸出的重定向
      4. 這是一定要設置為 true 的屬性,因為我們希望拿到命令的輸出結果。

      5. WorkingDirectory 設置工作路徑
      6. 本來這是一個可選設置,不過對于 git 命令來說,一般都是對一個已有的 git 倉庫進行操作,所以當然要指定一個合理的 git 倉庫了。

      7. UseShellExecute 設置為 false 表示不要使用 ShellExecute 函數創建進程
      8. 此屬性的詳細說明,

        UseShellExecute 的默認值是 true

        如果有以下需求,那么建議設置此值為 false

      9. 需要明確執行一個已知的程序
      10. 需要重定向輸入和輸出
      11. 如果你有以下需求,那么建議設置此值為 true 或者保持默認:

      12. 需要打開文檔、媒體、網頁文件等
      13. 需要打開 Url
      14. 需要打開腳本執行
      15. 需要打開計算機上環境變量中路徑中的程序 
      16. 這里我們必須指定為 false ,因為要重定向輸出的話,這是唯一有效值。順便一提,此屬性如果不設置,默認值是 true 。

        CommandRunner

        為了方便起見,我將全部運行一個命令的代碼封裝到了一個 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();
         }
         }
        }

        測試與結果

        以上 CommandRunner 命令的使用非常簡單, new 出來之后,得到一個可以用來執行命令的實例,然后每次執行調用 Run 方法傳入參數即可。

        var git = new CommandRunner("git", @"D:\Developments\Blogs\walterlv.github.io");
        git.Run("add .");
        git.Run(@"commit -m ""這是自動提交的""");

        如果需要獲得命令的執行結果,直接使用 Run 方法的返回值即可。

        比如下面我貼了 Main 函數的完整代碼,可以輸出我倉庫的當前狀態:

        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();
         }
         }
        }

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        C#/.NET使用git命令行來操作git倉庫的方法示例

        C#/.NET使用git命令行來操作git倉庫的方法示例:我們可以在命令行中操作 git,但是作為一名程序員,如果在大量重復的時候還手動敲命令行,那就太笨了。 本文介紹使用 C# 編寫一個 .NET 程序來自動化地使用 git 命令行來操作 git 倉庫。 這是一篇很基礎的入門文章。 最簡單的運行 git 命令的代碼 在
        推薦度:
        標簽: 命令行 net 倉庫
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品成人图区| 99久久这里只精品国产免费| 国产男女猛烈无遮挡免费视频 | 中文字幕成人免费高清在线视频| 四虎成人免费大片在线| 亚洲va久久久久| 好吊妞在线新免费视频| 亚洲中文字幕一二三四区| 女人与禽交视频免费看| 亚洲Av无码国产一区二区 | 四虎永久在线精品视频免费观看| 亚洲中文字幕无码爆乳app| 四虎www成人影院免费观看| 亚洲精品伦理熟女国产一区二区 | 中文字幕亚洲一区| 亚洲免费人成在线视频观看| 久久亚洲AV成人无码电影| 亚洲色欲色欲综合网站| 亚洲日韩精品国产一区二区三区| 在线免费观看一级毛片| 无遮挡a级毛片免费看| 亚洲天堂免费在线| 亚洲日韩AV一区二区三区四区| 手机看片久久国产免费| 一级做a爱过程免费视| 亚洲AV日韩AV永久无码绿巨人| 四虎成年永久免费网站| 久久久久亚洲AV无码去区首| 亚洲国产成人影院播放| 无码国产精品一区二区免费16| 爽爽日本在线视频免费| 一级中文字幕乱码免费| 亚洲尹人九九大色香蕉网站| 妞干网免费视频观看| 中文字幕在线视频免费| 亚洲一区二区影视| www.999精品视频观看免费| 亚洲国产精品无码久久九九大片| 中文字幕亚洲天堂| 一本久久免费视频| 亚洲理论片中文字幕电影|