shurtcut git оформление ветки - PullRequest
3 голосов
/ 28 апреля 2020

У меня есть хранилище с несколькими ветками b1-long-name, b2-long-name, b3-too-long-name

Я хочу иметь возможность быстрого переключения между ветками. Также я хочу запустить дополнительную команду git, прежде чем переключать ветку.

Я пытаюсь подойти к этому с помощью скрипта bash, вот мой пользовательский скрипт gitSwitch.sh

#!/bin/sh

set -e

git reset #<-- additional command
git checkout -f b2-long-name

Но проблема здесь в том, что я должен создать скрипт для каждой ветви, которую я делаю не очень хочется, интересно, как бы вы передали параметр в скрипт, чтобы он использовал правильное имя ветки?

gitSwitch b1 -> оформил бы b1-long-name
gitSwitch b2 -> оформил бы b2-long-name
и т. Д.

Есть идеи, как лучше к нему подойти?

Ответы [ 3 ]

3 голосов
/ 28 апреля 2020

Есть идеи, как лучше к нему подойти?

Для начала, установите git скрипт завершения , чтобы вместо него можно было набрать что-то вроде git checkout b1<tab> полного длинного имени. Вы также можете сделать несколько сокращенных псевдонимов для часто используемых команд.

1 голос
/ 28 апреля 2020

Вы можете использовать git branch --list pattern и сохранить его в массиве

В вашем случае:

readarray -d '' branches < <(git branch --list "*$1*")
len=${#branches[@]}

Если этот массив имеет только один элемент, тогда все, что вы передали в свой скрипт, достаточно указать c, чтобы изолировать только одну ветвь, и вы можете переключиться на нее.

Если у вас есть только одна ветвь, начинающаяся с b1, вы можете использовать b1 в качестве параметра.

Очевидно, что использование git checkout -f "$1-long-name" не будет работать, поскольку суффикс "long-name" варьируется между различными ветвями.

0 голосов
/ 28 апреля 2020

Вы можете создать git псевдоним , который будет выполнять дополнительные команды.

# .git/config
[alias]
    sw = !git reset && git checkout $1 && :

Чтобы избежать ввода длинных имен, вы можете использовать завершение табуляции .

git sw b1<tab>

Если заполнение вкладок не работает, вам может понадобиться сначала его настроить. См. Следующее:

Как настроить git bash Завершение командной строки?

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