У меня чертовски много времени, чтобы git взаимодействовал с моим определяемым пользователем рабочим деревом, которое существует вне папки, содержащей мой каталог .git .
В основном установка выглядит так: у меня есть два каталога, один называется "git-worktree", в котором находится файл, который я хочу отслеживать, а другой - "git-dir", который содержит папку репозитория .git, также известную как GIT_DIR.
Я инициализирую репозиторий, войдя в папку «git-dir» и запустив:
git --git-dir=./.git --work-tree=/Users/braitsch/Test/git-worktree/ init
Это успешно инициализирует репозиторий, и пока я нахожусь в папке «git-dir», я могу добавлять файлы, которые находятся в work-tree, запустите git status и зафиксируйте их. Круто.
Удар по яйцам здесь наступает, когда я пытаюсь запустить git stash, который выдает мне ошибку:
fatal: /usr/local/git/libexec/git-core/git-stash cannot be used without a working tree.
Теперь это ерунда, потому что я знаю (или, по крайней мере, думаю), что у меня есть набор рабочего дерева в папку "git-worktree", содержащую файлы, которые я хочу отслеживать.
git config --local -l показывает мне следующее:
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.worktree=/Users/braitsch/Test/git-worktree
core.ignorecase=true
Я даже попытался вручную добавить папку .git в локальный файл конфигурации в Посмотрим, поможет ли это, но безрезультатно.
core.gitdir=/Users/braitsch/Test/git-dir/.git
А вот и самое интересное. Git stash будет работать , если я установлю рабочее дерево в каталог, который является родительским для git-dir , например. Если я настрою рабочее дерево так, чтобы оно говорило о моем домашнем каталоге.
core.worktree=/Users/braitsch/
Итак, вопрос, который у меня к вам, ребята, заключается в том, какой параметр мне не хватает, чтобы указать git, чтобы мое рабочее дерево могло существовать где угодно в файловой системе, а не только по родительскому пути git-dir до корня? Конечно, должен быть способ разместить ваш git-dir и ваше рабочее дерево, где вы хотите, и после того, как вы сообщите git, где они находятся, все работает? Большое спасибо за чтение. Мы будем благодарны за любые идеи.