我希望能够从PowerShell脚本执行git命令,该脚本与我的git repo不在同一个文件夹中。
首先,我想检查当前分支,如果不是主分支,请尝试检查主分区并拉主分支。
到目前为止我做了什么:
function Get-ScriptDirectory {
Split-Path $script:MyInvocation.MyCommand.Path
}
$currentPath = Get-ScriptDirectory
[string]$Path_GIT = "C:\Program Files\Git\git-cmd.exe"
$gitRepo = $currentPath + "\..\"
$nameCurrentBranch = & $Path_GIT git -C "$gitRepo" rev-parse --abbrev-ref HEAD
从文档here和this question的答案。
$gitRepo
包含包含git repo的文件夹的路径。
我收到错误:
git-cmd.exe : fatal: Cannot change to 'C:\Users\MyName\Documents\Projects\MyProject\ Batchs\.." rev-parse --abbrev-ref HEAD': Invalid argument At C:\Users\MyName\Documents\Projects\MyProject\Batchs\Publish.ps1:64 char:22 + ... entBranch = & $Path_GIT git -C "$gitRepo" rev-parse --abbrev-ref HEAD ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (fatal: Cannot c...nvalid argument:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError
编辑: @ 4c74356b41提议后的新问题(使用Join-Path
):
我没有任何错误弹出窗口打开和关闭非常快,然后我的powershell脚本卡住了,好像它正在等待git-cmd.exe关闭。但我看不到cmd git的窗户,也无法关闭它。
答案 0 :(得分:8)
答案 1 :(得分:1)
尝试加入路径
$gitRepo = Join-Path $currentPath ".." -Resolve
答案 2 :(得分:0)
使用psget安装posh-git插件,显示当前分支。如果你有最新的PowerShell,很可能已经安装了psget。如果你没有它,那么使用这个命令得到它。
(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
要安装posh-git,请使用以下命令:
Install-Module posh-git