如何在PowerShell中检查指定Git提交是否已推送并执行推送?
在PowerShell中检查指定Git提交是否已推送并自动推送的实现方法
以下是实现需求的具体PowerShell脚本及说明:
核心逻辑
- 获取当前本地分支相对于远程分支的最新未推送提交信息
- 判断该提交的信息是否为
Test 123 - 若满足条件,则执行
git push命令
完整脚本
# 获取当前分支名称 $currentBranch = git rev-parse --abbrev-ref HEAD # 获取本地最新的未推送提交信息(仅取提交标题) $latestUnpushedMsg = git log --oneline "origin/$currentBranch..HEAD" -1 --pretty=format:"%s" # 验证条件并执行推送 if (-not [string]::IsNullOrEmpty($latestUnpushedMsg) -and $latestUnpushedMsg -eq "Test 123") { git push Write-Host "已成功推送提交:Test 123" } else { Write-Host "无匹配的未推送提交,无需执行推送操作" }
脚本说明
git rev-parse --abbrev-ref HEAD:自动获取当前所在分支名称,避免硬编码分支名,提升脚本通用性git log --oneline "origin/$currentBranch..HEAD" -1 --pretty=format:"%s":origin/$currentBranch..HEAD:筛选出本地分支比远程对应分支多的所有提交(即未推送的提交)-1:仅保留最新的一条未推送提交--pretty=format:"%s":只输出提交的标题信息(忽略哈希值等其他内容)
- 条件判断:先确认存在未推送提交(
$latestUnpushedMsg非空),再验证提交信息是否完全匹配Test 123,满足则执行推送
注意事项
- 确保当前PowerShell工作目录是Git仓库的根目录或子目录
- 若你的远程仓库别名不是
origin,需将脚本中的origin替换为实际的远程别名 - 执行脚本前请确保本地Git已配置好远程仓库的推送权限
内容的提问来源于stack exchange,提问作者Sergio Ramos
相关产品推荐
相关产品推荐

