Выполнение команд git.exe с вертикальной чертой из пакетного (.bat) файла - PullRequest
0 голосов
/ 23 мая 2019

Я хочу удалить все локальные ветви git (кроме master) из файла * .bat с помощью команды:

git.exe branch | grep -v "master" | xargs git branch -D 

Но эта строка содержит "|" и команда не выполняется.

Также не работает:

git.exe "branch | grep -v "master" | xargs git branch -D"

и

git.exe branch ^| grep -v "master" ^| xargs git branch -D

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Я решил эту проблему с помощью псевдонима git.

[alias]
    dellocbr = !sh -c \"git branch | grep -v \"master\" | xargs git branch -D\" -

Запустить в партию:

git dellocbr
0 голосов
/ 23 мая 2019

На основании ответа, данного здесь , вы можете сделать пакетный скрипт следующим образом:

@echo off
REM -- Variable declerations
set "textFile=tempBranchInfo.txt"
set "branchToKeep=master"
set "branchToReplaceWith="
git checkout master
git branch > %textFile%

REM -- remove "master" from list to keep the branch
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    >>"%textFile%" echo(!line:%branchToKeep%=%branchToReplaceWith%!
    endlocal
)

REM -- execute branch delete commands
for /f "delims=" %%a in (%textFile%) do (
    git branch -D %%a
)

REM -- remove temp-file with branch information inside
DEL %textFile%

REM -- show local branches after the cleaning
echo Local branches:
git branch

pause 
exit

Он будет использовать временный файл для хранения названия ветвей для удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...