Я надеюсь ссылаться на ветку вместо того, чтобы вводить ее имя. Я предполагаю, что "ссылка по номеру" является наиболее вероятным маршрутом.
Но я не могу понять, как разобрать имя ветви из вывода команды branch в оболочке Windows CMD.
Справочная информация: В моем рабочем процессе Git для Windows мне часто нужно извлекать или объединять ветви нескольких других. Я знаю, что автозаполнение возможно, но оно работает только в некоторых оболочках и все еще медленнее, чем работа. Я хотел бы напечатать эти типы вещей, где $ - это специальная ссылка, а не абсолютное имя ветви:
git checkout $1 #BIGGEST WISH# # check out the most recent check-in
git merge $moderation # merge a frequently used "origin/team_moderation"
git merge $latest # merge the latest branch committed
Пока я могу получить список ветвей, отсортированных по дате фиксации :
cmd_prompt> git branch -r --sort=-committerdate --no-color
.gitconfig> br = !"f() { git fetch -p && git branch -r --sort=-committerdate $@; }; f" # shows remote branches, -a would show all
Но мои усилия по извлечению названий веток все зашли в тупик.
- Я пытался " for / F ": проанализировать список ветвей, перейдя к строке 2, получить второй токенет после этого токена:>
cmd_prompt> @for /f "skip=2 tokens=2 delims=>" %a in ('git branch -r --sort=-committerdate --no-color') do @echo %a
cmd_output> origin/master
Как показано, эта команда работает в окне CMD. Но я не могу заставить его работать в моем файле .gitconfig:
.gitconfig> checkoutnumber = !"f() { 'for /f "skip=2 tokens=2 delims=>" %%a in ('git branch -r --sort=-committerdate --no-color') do @echo %%a'|git checkout ; }; f"
cmd_prompt> git checkoutnumber 2
cmd_output> environment: for /f skip=2 tokens=2 delims=> %%a in (git: No such file or directory
Я пробовал for.. |git checkout
и `vs. 'и \"
... не могу сделать его счастливым или увидеть что это видение.
...
Я пытался
findstr : распечатать список, добавить номера строк впереди и найти номер строки. Может быть, потом убрать номер строки, если я смогу заставить ее работать ...
cmd_prompt> git branch -r --sort=-committerdate --no-color|findstr /n ^^|findstr "^[2]:"
cmd_output> 2: origin/master
Как вы можете видеть, этот вид работает в командной строке, чтобы вернуть 2-ю строку (хотя она имеет номер строки спереди). Но я, кажется, не могу помассировать специальные символы достаточно, чтобы угодить .gitconfig:
.gitconfig> checkoutnumber = !"f() { git branch -r --sort=-committerdate --no-color|findstr /n |findstr \"^[$1]:\"|git checkout && git st| xargs echo $1; }; f"
cmd_prompt> checkoutnumber 2
cmd_output> FINDSTR: Cannot open ^^
cmd_output> Your branch is up to date...
...
Другие варианты : я рассмотрел git - bash, или делал пакетные скрипты, или использовал другие языки, такие как Python / Perl / et c. Это тоже было бы ценно, но я бы выбрал второй вариант ... я бы предпочел "минимальную настройку". Я использую git версию 2.19.1. windows .1 в окне Windows 10 CMD, какую оболочку я в настоящее время предпочитаю Git - bash (пока я не изменю свой рабочий процесс). Когда я меняю рабочие процессы и инструменты, возможно, я могу использовать оболочку git - bash и пытаться использовать sed, grep, xargs или что-то еще. Не проще ли вывести список веток в файл и запустить cmd для его анализа, а затем удалить файл?
Изменить Git : Я немного искал, как сделать запрос на улучшение до Git, но звучало так, будто мне нужно было либо написать его самому, либо убедить достаточно других, чтобы сделать то, чего у меня нет на сегодня.
У кого-нибудь есть лучший способ получить или использовать Git ссылки, подобные этим?