C# как выполнять команды GIT из консольного приложения
Я хочу выполнить "git pull" или "git pull origin master" в определенной папке, но это не работает, когда я пытаюсь сделать это так:
Есть предложения?
Что я уже пробовал:
public static void gitPull () { System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.FileName = "CMD.exe"; startInfo.Arguments = @"/c d:\GIT\proj1\git pull origin master"; process.StartInfo = startInfo; process.Start(); string output = process.StandardOutput.ReadToEnd(); Console.WriteLine(output); process.WaitForExit(); }
РЕДАКТИРОВАТЬ: Добавлено из решения 1:
Когда я нахожусь внутри d:\GIT\proj1\ и использование
git pull
это работает. Но как переместиться в папку proj1 и выполнить команду git pull в одном месте?Когда я пытаюсь сделать это методом выше а я получаю:
'd:\GIT\proj1\' is not recognized as an internal or external command, operable program or batch file. fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Pete O'Hanlon
Ты сказал, что код не работает, но это нам ничего не говорит. Вы получаете ошибки? Если да, то какие ошибки вы видите?
Прелесть команд процесса заключается в том, что вы можете попробовать их без необходимости запускать приложение. Что вы получаете, когда запускаете d:\GIT\proj1\git pull master
командовать?
aksimoN
Когда я нахожусь внутри
d:\GIT\proj1\
и используйте: git pull
это работает.
Но как переместиться в папку proj1 и выполнить команду git pull в одном месте?
Когда я пытаюсь сделать это методом выше а я получаю:
'd:\GIT\proj1\git' не распознается как внутренняя или внешняя команда,
работоспособная программа или пакетный файл.
Pete O'Hanlon
Ответ Ричарда ниже показывает, что вам нужно сделать. Проблема, возникшая в вашем коде, заключается в том, что процесс ожидает d:\GIT\proj1\GIT чтобы быть выполняемой командой, в то время как то, что вы на самом деле пытаетесь сделать, это запустить GIT (который находится в другом каталоге) внутри d:\GIT\proj1 папка.