#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?
Комментариев нет:
Отправить комментарий