@echo off
set /p branchName=Please input branch or tag name :
rem 这里我用的是当前目录, 可以换成自己任意工作目录
set workDir=%~dp0
call:checkFunc "%workDir%" "%branchName%"
echo.&pause&goto:eof
:printFunc
echo.
echo *************************************************
echo %~1
echo *************************************************
echo.
goto:eof
rem 功能是本地与远程分支关联, 这样就可以使用简短语句,如: git pull/git push...
rem 如果已经关联,此功能代码可以注释掉
:setUpstream
cd /d "%~1"
for /f "tokens=1" %%m in ('git rev-parse --abbrev-ref head') do (
git branch --set-upstream-to=origin/%%m
)
goto:eof
:fetchFunc
git fetch
goto:eof
:checkFunc
cd /d "%~1"
Call:setUpstream "%~1"
Call:fetchFunc
for /f "tokens=1" %%a in ('git rev-parse --abbrev-ref head') do (
if "%%a" equ "%~2" (
Call:printFunc "Branch: %~2 exist!"
goto:eof
)
)
rem check branch
rem 考虑到可能要查找本地未上传到远程的代码分支, 这里用到参数-a, 如果不需要
rem 考虑这种情况, 可以换成 -r, 那就只需要判断if "%%x" equ "origin/%~2"就可以了
for /f "tokens=1" %%x in ('git branch -a ^|findstr %~2') do (
if "%%x" equ "%~2" (
Call:printFunc "Branch: %%x exist!"
goto:eof
) else if "%%x" equ "origin/%~2" (
Call:printFunc "Branch: %%x exist!"
goto:eof
) else if "%%x" equ "remotes/origin/%~2" (
Call:printFunc "Branch: %%x exist!"
goto:eof
)
)
rem check tag
for /f "tokens=1" %%x in ('git tag ^|findstr %~2') do (
if "%%x" equ "%~2" (
Call:printFunc "Tag: %%x exist!"
goto:eof
)
)
Call:printFunc "%~2: branch or tag name cannot be found"
goto:eof