C\#/.NET 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,
};
최소 이 네 개의 속성 을 설정 해 야 합 니 다:CreateNoWindow
이 명령 을 위해 콘 솔 창 을 따로 만 들 지 말 라 고 했 습 니 다RedirectStandardOutput
수출 의 재 정립true
로 설정 해 야 하 는 속성 입 니 다.왜냐하면 우 리 는 명령 의 출력 결 과 를 얻 기 를 원 하기 때 문 입 니 다.WorkingDirectory
작업 경로 설정git
명령 에 있어 서 기 존의 git 창 고 를 조작 하기 때문에 합 리 적 인 git 창 고 를 지정 해 야 합 니 다.UseShellExecute
은false
함수 생 성 프로 세 스 를 사용 하지 말 라 고 설정 했다ShellExecute
.이 속성의 상세 한 설명,
UseShellExecute 의 기본 값 은
true
입 니 다.다음 과 같은 요구 사항 이 있 으 면 이 값 을
false
로 설정 하 는 것 을 권장 합 니 다.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();
}
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 SQLite를 사용한 Windows Forms 앱 개발Visual Studio 2017에서 SQLite를 사용하여 Windows Forms 앱을 개발해 보았습니다. 아직 서버 탐색기나 TableAdaptor를 사용한 GUI에서의 개발에는 대응하지 않는 것 같습니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.