如何在Windows中检查未提交的git存储库

时间:2014-02-06 16:28:01

标签: git powershell-v3.0

我有一大堆可怕的git存储库,包括我自己和几个客户端,分散在一组目录中(我工作的其他几个开发人员也有同样的问题)。我想编写一个我和他们可以运行的脚本,它将遍历一组目录并告诉我们哪些目录有未提交的更改。可悲的是,我在那里看到的大多数例子都是使用bash做的,这可能并不适用于所有机器(我们是一家门店)。有没有办法在PowerShell或普通的旧批处理文件中执行此操作?

1 个答案:

答案 0 :(得分:3)

这是一个快速的'脏的Powershell脚本:

$fn = $env:temp\gitStat.txt
$dir = dir $pwd | ?{$_.PSISContainer}  
$start = $pwd  

foreach ($d in $dir) {  
  cd $d  
  if(Test-Path $fn) {  
      Remove-Item $fn  
  }  
  & git status | Out-File $fn  
  $ss = Select-String -Path $fn -SimpleMatch "Changes not staged for commit"  
  if($ss -ne $null) {  
      $msg = [string]::Format("{0} has modified files", $pwd)  
      Write-Host $msg  
  }  
  $ss = Select-String -Path $fn -SimpleMatch "Untracked files"  
  if($ss -ne $null) {  
      $msg = [string]::Format("{0} has untracked files", $pwd)  
      Write-Host $msg  
  }  
  $ss = Select-String -Path $fn -SimpleMatch "Changes to be committed"  
  if($ss -ne $null) {  
      $msg = [string]::Format("{0} has staged files", $pwd)  
      Write-Host $msg  
  }  
  cd $start  
}  

这是我在JPSoft的tcc.exe命令shell下运行的批处理文件。它可能适用于cmd.exe或powershell。

@echo off  
:  Because this needs %_cwd, it must be used with TCC.exe  
@if "%_cmdproc"=="TCC"  (goto OK)  

:testTCCLE   
@if NOT "%_cmdproc"=="TCCLE"  (goto wrongShell)  

:OK  

global /i /q /s4 (if exist .git\ echo === %_cwd === && git status)  

goto xit  

:wrongShell  
echo TCC/TCCLE required.  

:xit  

这显示了每个git目录的状态;我一直在研究一个只显示未提交更改的dirs的版本,但还没有完成它。另一个改进是显示他们追踪的任何回购的前方或后方的目标。 HTH。