Страницы

Поиск по вопросам

воскресенье, 30 июня 2019 г.

Получить адрес корневой директории в git-репозитории

Я пишу shell-скрипт для автоматизации работы с Git. Мне нужен способ получить полный или относительный адрес корневой директории проекта при выполнении команды в любой вложенной директории (включая корневую).
Например, структура проекта, лежащего в Users/nickvolynkin/git-example
- root/ | - .git/ | - a/ | - b/ | - c/ | - c1/ | - c2/
cd c/c1/ echo somecommand
# вариант 1 ../../
# вариант 2 Users/nickvolynkin/git-example


Ответ

Абсолютный путь через 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?

Комментариев нет:

Отправить комментарий