{"id":860,"title":"\u041f\u043e\u043b\u0451\u0442 \u043a \u042e\u043f\u0438\u0442\u0435\u0440\u0443 \u0432 \u043d\u043e\u0432\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u0412\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0430. \u041a\u043e\u0434\u0437\u0438\u043c\u0430 \u0443\u0436\u0435 \u0437\u0430\u0446\u0435\u043d\u0438\u043b","url":"\/redirect?component=advertising&id=860&url=https:\/\/tjournal.ru\/umg\/450423-poslushat-novoe-kosmicheskaya-opera-ot-sozdatelya-saundtreka-k-begushchemu-po-lezviyu&placeBit=1&hash=d7cf24ebd26468490c3963a5f0d2007e10183cc7470e797c409220708a49a72a","isPaidAndBannersEnabled":false}

Git alias

Первая заметка на TJ. Первый alias для git. Первый shell скрипт

Сравнительно недавно любимый gui клиент для git GitKraken обновился и стал платным для приватных репозиториев и репозиториев в self hosted gitlab. Написал в поддержку свое недовольство тем, что план «Individual» не покрывает потребности рядового разработчика. А значит, остается довольно бесполезным, с моей точки зрения. И, не дожидаясь ответа, решил попробовать вернуться в командную строку для работы с git (откуда ушел пару лет назад). Завел раздел в бумажном блокноте, записываю шпаргалки с командами, чувствую себя студентом и получаю удовольствие от процесса.

Первым делом захотелось автоматизировать удаление ненужных локальных веток. Их количество очень быстро растет. В команде налажен процесс Code Review, и часто хочется локально посмотреть изменения в реквесте. Успешная реализация задуманного и подтолкнула написать эту заметку.

Пока идея оставалась идеей, в голове крутились пара вариантов реализации — bash alias или очень маленькая программа на Python. Когда же дело дошло до реализации, очень быстро нагугил, что git поддерживает свои alias. Добавляются в. gitconfig. По первому впечатлению могут покрыть все рутины работы с гитом, лишь бы фантазии хватило.

Самый простой пример содержания файла. gitconfig:

[user] email = user@mail.com name = user [alias] br = branch

теперь команда git br выводит результаты git branch.

Поддерживается shell. Алиас sayhello =! (echo «Hello World») выполнится.

В общем, как часто бывает — все придумали до меня. И статей на тему огромное количество в сети. И осталось, обладая самым минимальным представлением о том, как пишутся shell скрипты, потратить пару часов на вот этот шедевр

[alias] localclean = "!f() { \ current_branch=$(git rev-parse --abbrev-ref HEAD); \ git branch | grep -E -v 'master|develop|staging|'..$current_branch'' | xargs git branch -D; \ git branch; \ }; f"

! f() { 〈shell script〉 }; f» — общий формат для записи скрипта в алиас

current_branch=$(git rev-parse --abbrev-ref HEAD) - запись в переменную current_branch текущей ветки

git branch | grep -E -v 'master|develop|staging|'..$current_branch'' | xargs git branch -D — применение git branch -D для всех веток, кроме master, develop, staging и текущей.

git branch — добавил для вывода результата работы скрипта.

Вот и все. Почувствовал себя мамкиным программистом и решил поделиться с подсайтом. Надеюсь, что пост подтолкнет кого-то из местных, не знакомых с алиасами, немного автоматизировать свой труд.

Оставлю ссылки, из которых получил все необходимое, перед тем как закрою вкладки:

P.S. Матерых юниксоидов, для которых заметка показалась бесполезной — прошу в комментариях подсказать более оптимальный вариант решения. Наверняка он есть.

{ "author_name": "Дмитрий Алексеенков", "author_type": "self", "tags": ["\u0441\u0441\u044b\u043b\u043a\u0438","\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438"], "comments": 14, "likes": 24, "favorites": 6, "is_advertisement": false, "subsite_label": "dev", "id": 164239, "is_wide": true, "is_ugc": true, "date": "Fri, 01 May 2020 03:06:15 +0300", "is_special": false }
0
14 комментариев
Популярные
По порядку
Написать комментарий...

Комментарий удален по просьбе пользователя

6

Ты прав. Поправлю извинения. Спасибо

1
Футбольный чувак

Комментарий удален по просьбе пользователя

1

Да я и роутер умею настраивать, чё уж там

4

Тыжпрограммист спаситель планеты

1

В команде налажен процесс Code Review, и часто хочется локально посмотреть изменения в реквесте.

Для этого не обязательно создавать локальную ветку, можешь делать чекаут конкретного коммита ред.

1

А так круто, что реализовал свою идею, конечно

1

Больше всего меня грустит в таких штуках то, что эти вещи наверняка делались не только мной - стопятисотней людей ещё.

Конечно, очень приятно напилить такой скрипт самому.
Но иногда хочется не пилить скрипт а взять уже готовый, удобный.
И ведь он писался уже не раз кем-то, а мне сейчас нужно тратить время на его написание.

0

Поймите правильно, я люблю писать скрипты, делающие то, что мне хочется. Но иногда в это время есть ЕЩЁ БОЛЕЕ интересная задача.

0

Ну есть же решения. Первое очевидное. И, пожалуй, правильное с точки зрения поддержки продукта, который нравится - все таки заплатить за про версию. Кто-то придумал сделать тоже самое, но в удобном формате. Кто-то нарисовал классный дизайн. А кто-то написал код, который делает ровно то, что мне нужно. Почему бы не поучаствовать в оплате труда этих ребят?
Как я писал - лично мне нравится сам процесс обучения. Потратил бы я это время на кодинг чего-то другого, не связанного с основной работой? Определенно. Узнал бы про то, что в git есть alias - возможно, позже. Возможно, гораздо позже.

0

Не, у тебя-то точно профит

0

GitKraken очень крутая штука, постоянно юзаю, всем доволен.
Пробовал GitHub desktop/fork/sublime merge?

0

Комментарий удален по просьбе пользователя

0

Комментарий удален по просьбе пользователя

0
Читать все 14 комментариев
null