git - 检查 Powershell 脚本中的 git status 是否干净

标签 git powershell git-status

我正在开发用于创建程序发布的 Powershell 脚本。 为此,我想检查 git 工作树是否干净,是否没有未提交的更改。

我读过 this post但它与 bash 有关。

如果 git 工作树是干净的并且有任何东西要提交,我如何从 powershell 脚本内部检查?我不关心未跟踪的文件。

我试过类似的东西

  $gitOutput = (git status -z) | Out-String
  if ($gitOutput) {
    "output"
  } else {
    "no Output"
  }

问题是当所有内容都已提交但有一些未跟踪的文件时,我也会打印 output,这是我想避免的事情。我想忽略未跟踪的文件并仅检查所有跟踪的文件是否已提交。

最佳答案

使用 git status --porcelain 将输出作为易于解析的列表获取。

未跟踪的文件以状态 ?? 为前缀,因此您可以轻松过滤掉这些文件,然后根据是否有任何输出剩余来检查是否有未提交的更改:

if(git status --porcelain |Where {$_ -match '^\?\?'}){
    # untracked files exist
} 
elseif(git status --porcelain |Where {$_ -notmatch '^\?\?'}) {
    # uncommitted changes
}
else {
    # tree is clean
}

关于git - 检查 Powershell 脚本中的 git status 是否干净,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45145875/

相关文章:

git - 共享 AWS Elastic Beanstalk 配置以将 git 部署到 AWS

git - 将本地仓库链接到不正确的 github 帐户

unit-testing - Pester:并非所有模拟函数都被拦截

使用 IF 语句运行命令之前的 Powershell 操作系统检查

Powershell:从每个路径中删除包含多个路径的字符串中的最后一个 '/' 字符

gitignore 与平台特定的定义?

git - 如何查看 git 子模块库的状态?

git - 运行 git status 时,消息 "your branch is up-to-date with ' origin/branch' 仅出现几次

git - 防止 git 使用 pager 进行短输出?

git status 返回 fatal : Not a git repository but . git 存在并且 HEAD 具有适当的权限