Страницы

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

суббота, 11 апреля 2020 г.

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

#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?

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

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