git 如何在Windows批处理中按名称模式 checkout 分支?

7cwmlq89  于 2023-03-11  发布在  Git
关注(0)|答案(1)|浏览(100)

我想从Windows批处理文件中自动地本地 checkout 一个分支,查找给定的分支名称模式,例如rc_,这样我就可以 checkout 最新的候选版本,而不必费心检查哪个是最新的。
如果我有(注意使用prune来确保我有最新的原始分支视图,而不是所有过时的分支):

> git fetch --all --prune 
> git branch --all 
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch1
remotes/origin/branch2
remotes/origin/branch3
remotes/origin/rc_1.1.1

我想自动 checkout rc_1.1.1;我会从Windows bat文件执行以下操作(但不起作用):

git branch --list --all | for /f "tokens=1" %%i in ('findstr \/rc_') do set my_rc_branch=%%i
git checkout %my_rc_branch%

我有两个问题:

  1. ...do set my_rc_branch=%%i不工作,因为在下面的步骤中它总是空的
    1.我只需要 checkout rc_1.1.1,而不是remotes/origin/rc_1.1.1,如何才能只将rc_1.1.1部分放入my_rc_branch
ddarikpa

ddarikpa1#

您的命令应该在括号内,并且为了确保您只匹配leaf(输出路径的最后一项),而不是在分支中的任何地方匹配/rc_的任何示例,您可能还应该改进findstr.exe模式:

@Echo Off
SetLocal EnableExtensions
Set "my_rc_branch="
For /F %%G In ('git.exe branch --list --all 2^>NUL ^| %SystemRoot%\System32\findstr.exe /ir "[/]rc_[^/][^/]*$"') Do Set "my_rc_branch=%%~nxG"
If Defined my_rc_branch git.exe checkout %my_rc_branch%

相关问题