.git каталог в git worktree Не каталог - PullRequest
0 голосов
/ 15 декабря 2018

Я хотел бы создать сценарий bash, который позволит мне запускать какой-либо другой сценарий bash в основной ветви, а также продолжить работу в другой ветви.

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

git checkout other-branch
git worktree add ./temp master
cd temp
./some-script

Как только я нахожусь в рабочем дереве, я хотел бы запускать git hooks, но он говорит мне, что .git не является каталогом в рабочем дереве,Это почему?И возможно ли получить доступ к «оригинальному» каталогу .git в рабочем дереве?

1 Ответ

0 голосов
/ 16 декабря 2018

Из руководства :

Каждое связанное рабочее дерево имеет собственный подкаталог в каталоге $ GIT_DIR / worktrees хранилища.Имя частного подкаталога обычно является базовым именем пути связанного рабочего дерева, возможно, с добавлением номера, чтобы сделать его уникальным.Например, когда $ GIT_DIR = / path / main / .git команда git worktree add / path / other / test-next next создает связанное рабочее дерево в / path / other / test-next, а также создает $ GIT_DIR / worktreesКаталог / test-next (или $ GIT_DIR / worktrees / test-next1, если test-next уже пройден).

В связанном рабочем дереве $ GIT_DIR установлен для указания на этот частный каталог (например, / path/main/.git/worktrees/test-next в примере) и $ GIT_COMMON_DIR устанавливаются так, чтобы указывать на $ GIT_DIR основного рабочего дерева (например, /path/main/.git).Эти настройки выполняются в файле .git, расположенном в верхнем каталоге связанного рабочего дерева.

То есть, $ GIT_DIR больше не указывает прямо на ваш обычный .git, когда у вас есть рабочее дерево.извлечены, и да, вы можете получить доступ к главному .git из $ GIT_COMMON_DIR.

Альтернативное решение

Один простой способ получить доступ к файлу независимо от того, какая ветвь извлечена, это использовать git-кот-файл.Это может не сработать, если вам нужно запустить git hooks или если самому сценарию необходим доступ к другим файлам из ветви, но в противном случае это, вероятно, проще.

Например:

git cat-file -p master:myscript.sh | bash -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...