如何修复Windows批处理文件以正确推送Git变更并解决提交消息截断问题
Git提交消息截断问题解决方法
提交消息仅显示“Updated”而非完整“Updated Packages”的核心原因是带空格的参数未被正确包裹——Windows命令行默认将空格作为参数分隔符,导致"Updated Packages"被拆成两个独立参数,批处理中的%2只拿到第一个词,后续内容被错误分配给其他参数。
修复步骤:
1. 修正批处理文件
给git commit的消息参数添加双引号,确保空格被当作消息的一部分:
@echo off pushd %1 git add . git commit -m "%2" git push origin %3
注:原批处理中的echo @off是错误写法,需改为@echo off避免多余输出。
2. 修改C#调用代码
传递参数时,用双引号包裹所有可能包含空格的内容(仓库路径、提交消息、分支名),防止命令行拆分参数:
private static void RunPushGitScript(string scriptPath, string repositoryPath, string headBranch, string commitMessage) { ProcessStartInfo info = new ProcessStartInfo(scriptPath); info.CreateNoWindow = false; // 用转义双引号包裹每个参数 info.Arguments = string.Format("\"{0}\" \"{1}\" \"{2}\"", repositoryPath, commitMessage, headBranch); var process = Process.Start(info); process.WaitForExit(); }
如果你的场景中固定使用"Updated Packages"作为消息,也可以直接替换commitMessage为该字符串,但保留参数化写法更通用。
内容的提问来源于stack exchange,提问作者Shishank Jain
相关产品推荐
相关产品推荐

