Создание собственных команд в Git
Всем привет! Этот материал предназначен для тех, кто уже имеет начальный уровень работы с GIT и BitBucket. Рассмотрю примеры в Git Bash version 2.33.0, API BitBucket 2.0, https://bitbucket.org
- Что такое alias (знакомство)
- Создание alias с выполнением функции
- Alias с переменной
- Alias для создания удаленного репозитория BitBucket в Git Bash
1. Что такое alias (знакомство)
В Git имеется возможность добавления собственных команд, которые значительно расширяют возможности Git-а, как инструмента. Вы можете создавать собственные команды и научить GIT выполнять их. А также делать существующие длинные команды GIT-а более короткими, что значительно сократить время вашей работы с GIT-ом. Я не буду описывать все команды, которые можно создавать в GIT, а расскажу только самые полезные и интересные.
Итак, начнем!
Самые частые команды, которые мы используем – это:
И каждый раз мы вводим их, чтобы добавить в индекс новые или измененные файлы и зафиксировать эти изменения. Но можно существенно сократить время на ввод этих команд, если создать новую команду, которая будет объединять несколько последовательных команд.
Новые команды можно создавать с помощью встроенной команды GIT-а: alias.
Давайте создадим нашу первую команду. Введите в Git Bash:
В этом примере мы создали команду ac, которая объединяет команды GIT: add . и commit -m.
Знак {!} – оповещает, что будет команда оболочки.
Параметр --global указывает, что изменения вносятся в глобальный конфигурационный файл GIT — а (т.е. корневой каталог, куда установлен GIT), а не репозитория.
Параметр --add, как не сложно догадаться, добавляет новый алиас. Если вы хотите удалить алиас, то следует заменить --add на --unset. Если хотите перезаписать алиас, то тогда нужно поставить --replace-all.
Теперь попробуем выполнить новую команду в Git Bash:
$ git ac
Результат:
Команда отличная, но я привыкла после этих команд выполнять git status, чтобы посмотреть текущий статус репозитория. Поэтому предлагаю еще расширить возможности новой команды.
Перепишем алиас ac:
Если выполнить команду ac в таком варианта, то git Bash выдаст ошибку:
error: pathspec ‘arg’ did not match any file(s) known to git
Потому что после команды commit -m ожидается комментарий:
И комментарий – это динамический параметр, поэтому здесь нужна переменная, в которую мы будем передавать свое значение. Правильное добавление алиаса будет таким:
Теперь выполним команду ac в Git Bash:
Результат:
Все работает верно! Наш комментарий «test arg» передался в переменную $1 и выполнил последовательно команды Git-а.
Ну вот теперь, когда мы познакомились с alias, можно попробовать что-то посложнее.
2. Создание alias с выполнением функции
Создадим функцию с bash-командами и обернем ее командой GIT-а. Т.е. при выполнении команды GIT-а, выполнится функция с bash командами. Создайте в директории с установленным Git-ом файл ~\Git\etc\.my_functions и пропишите там функцию fn:
Затем откройте git bash и командой добавьте alias, который назовем echofn:
Алиас echofn будет запускать bash, а bash -с, в свою очередь, выполнит строку в одинарных кавычках. В строке команда source прочитает файл .my_functions и выполнит функцию fn. Обратите внимание, что внутренние одинарные кавычки должны быть экранированы (\’), т.к. они находятся внутри одинарных кавычек. Впереди с описанием команды необходимо поставить знак $, чтобы правильно передать всю строку с bash командами и не возникало ошибки: bash: syntax error near unexpected token `}’
Теперь, если выполним нашу новую команду в Git Bash:
, то получим результат:
Hello, world!
3. Alias с переменной
Есть еще способ создания алиаса. Можно команды-алиасы прописывать прямо в файлах Git-а. Пропишите в файле ~\Git\etc\gitconfig строки:
Затем запустите новую команду {hw} в Git Bash:
Результат:
Чтобы посмотреть все наши созданные алиасы, выполните команду в Git Bash, чтобы прочитать строки с помощью регулярного выражения, начинающиеся со слова «alias» из конфигурационных настроек Git-а:
А еще лучше создайте новую команду Git-a. Выполните команду в Git Bash:
(а затем выполните созданную команду в Git Bash):
Результат покажет все ваши алиасы:
4. Alias для создания удаленного репозитория BitBucket в Git Bash
Самое полезное я оставила на конец. Если вы используете в качестве удаленного репозитория BitBucket, то наверняка сталкивались с такой проблемой – как создать новый репозиторий из консоли. Например: вы создали новый репозиторий на локальной машине, делали в нем изменения файлов. И вот когда закончили и решили запушить это на BitBucket, то вам выдается ошибка, что на BB репозитория нет и его надо сначала создать. Вы идете на сайт BitBucket-а, создаете там пустой репозиторий, потом из консоли Git Bash делаете связку с удаленным репозиторием. Не слишком изящно, да? Если у вас нет возможности установить дополнительные инструменты, то тут как раз подойдет создание новой команды.
На площадке BitBucket есть API, который позволяет исполнять команды для различных действий. Документацию по API команд вы можете посмотреть тут: https://developer.atlassian.com/cloud/bitbucket/rest/intro/#authentication
Цепочка команд формируется в виде форматированного контента в формате JSON. А далее необходимо этот форматированный контент послать на ресурс API BitBucket. Послать можно с помощью библиотеки CURL, которая поставляется вместе с пакетом Git Bash.
Пропишите в файле ~\Git\etc\.my_functions строки:
Итак, мы создали функцию new_repo, которая будет создавать с помощью Curl и API BitBucket 2.0.
удаленный репозиторий. Вместо {login_id} – вы прописываете свой логин, зарегистрированный в BitBucket; вместо {app_password} – прописываете APP пароль, который можно сгенерировать в BitBucket-е нажав на свой профиль-> Personal settings-> App Paswords-> Create app password. Откроется диалоговое окно:
Затем выбираете необходимые параметры и жмете Create.
Далее вы увидите пароль – строку:
Запишите свой пароль. Этот пароль вы можете использовать для аутентификации в различных приложениях. Например: графических редакторах версионного контроля и т.д.
Вернемся к нашей функции new_repo… Обратите внимание на строку перед функцией namerep= «$1». «$1» – это параметр, который будет передаваться из GIT, а namerep – это глобальная bash переменная, которая потом будет использована внутри функции. Эта переменная будет принимать наименование нашего нового репозитория.
Теперь, в файле ~\Git\etc\gitconfig пропишите строки и сохранитесь:
Далее, выполните новую команду в Git Bash:
Если вы посмотрите в своем аккаунте список репозиторий в BB, то увидите там новый репозиторий repo1
Удаленный репозиторий мы создали, но нам надо также его создать на локальной машине и связать его с удаленным. Здесь можно выбрать — каким способом вы хотите сделать связь между удаленным и локальным репозиторием. Можно сделать клон:
1 вариант
, либо создать такую директорию в вашей рабочей области на локальной машине и связать репозитории:
2 вариант
Я выбираю первый вариант.
Добавьте пару строк в ранее созданную функцию (~\Git\etc\.my_functions):
Выполните в Git Bash команду:
Все готово!!!
Проверьте создание нового репозитория в Bitbucket и создание локального репозитория в вашей рабочей директории на локальной машине.
Все примеры работающие, проверенные – можно использовать в работе с Git и BitBucket. И вы можете создать больше полезных для себя alias-ов и применять их, чтобы не тратить много времени на ведение и контроль версии файлов.