#git #shell
Я пишу shell-скрипт для автоматизации работы с Git. Мне нужен способ получить полный или относительный адрес корневой директории проекта при выполнении команды в любой вложенной директории (включая корневую). Например, структура проекта, лежащего в Users/nickvolynkin/git-example: - root/ | - .git/ | - a/ | - b/ | - c/ | - c1/ | - c2/ cd c/c1/ echo somecommand # вариант 1 ../../ # вариант 2 Users/nickvolynkin/git-example
Ответы
Ответ 1
Абсолютный путь через rev-parse $ echo $(git rev-parse --show-toplevel) Users/nickvolynkin/git-example Относительный путь через rev-parse $ echo $(git rev-parse --show-cdup) ../../ Абсолютный путь через alias [alias] root = "!pwd" в shell-скрипте: $ cd Users/nickvolynkin/git-example/c/c1 $ echo `git root` Users/nickvolynkin/git-example # отличие от просто pwd: $ pwd Users/nickvolynkin/git-example/c/c1 Абсолютный путь через временный alias (без регистрации и смс). $ echo $(git -c alias.root='!pwd' root) Для передачи аргументом в Git Если этот адрес необходимо передать аргументом в какую-то из команд Git, то лучше использовать :/ # из любой папки делает reset на всю рабочую область $ git reset :/ # то же самое, что и $ git reset $(git rev-parse --show-toplevel) Частично основано на ответах из Is there a way to get the git root directory in one command?
Комментариев нет:
Отправить комментарий