Bash / Git - Как сделать скрипт, используя текущее имя ветки git - PullRequest
1 голос
/ 01 июля 2019

Новое в скриптах bash. Знайте достаточно, чтобы запустить что-то простое из вступительных видео через LinuxAcademy.

Я бы хотел вывести свое текущее имя ветви Git в скрипт как переменную и использовать эту переменную для создания каталога.

Оттуда, я думаю, я могу автоматизировать остальную часть процесса.

Пока нет сценария, но я знаю, что бы я хотел, чтобы он делал; здесь это простым языком.

  1. cd somedir / dir
  2. ветка git (имя в качестве переменной)
  3. mkdir (как переменная имени ветви)
  4. cd (newdir)
  5. touch xyz.html
  6. mkdir css img
  7. cd css touch xyz.css reset.css
  8. кд ../..

Ответы [ 2 ]

4 голосов
/ 01 июля 2019

Существует два различных хороших способа сделать это и несколько плохих способов.

Самый распространенный плохой способ, который вы найдете, - этоВариант на эту тему:

branch=$(git branch | grep '\*' | cut -d' ' -f2)      # don't do this!

Замените это на:

branch=$(git rev-parse --abbrev-ref HEAD)

Обратите внимание, что если HEAD равно отсоединено (обычныйдостаточно состояния, которое означает, что вовсе не на какой-либо ветви , обычно встречается, например, когда вы находитесь в середине перебазирования, которое вы еще не завершили), просто печатается HEAD.Использование этого в качестве имени ветви часто работает и делает правильные вещи, так что все в порядке, пока, ну, все в порядке.(cut версия этого отпечатка (HEAD, которая не работает.)

Другой способ сделать это:

branch=$(git symbolic-ref --short HEAD) || exit

(который вы можете сделать любительницей, если хотите).В этом варианте, если вы не находитесь на ветке - если вы находитесь в том режиме HEAD - команда git symbolic-ref выдаст жалобу:

fatal: ref HEAD is not a symbolic ref

и предложение || exit сделаетваш сценарий завершается немедленно, вместо того, чтобы продолжать использовать $branch, как если бы это было допустимое имя ветви, когда это не так.Используйте этот фрагмент кода, если использование буквальной строки HEAD вместо фактического имени ветви является неправильным .

3 голосов
/ 01 июля 2019

В контексте bash вы должны использовать простую команду git

git rev-parse --abbrev-ref HEAD

для вывода текущей ветви в ее краткой форме.( документ )

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