Git Stash & Worktree Woes - PullRequest
       16

Git Stash & Worktree Woes

8 голосов
/ 18 июня 2011

У меня чертовски много времени получается, когда git взаимодействует с моим определяемым пользователем рабочим деревом, которое существует вне папки, в которой находится мой каталог .git.

По сути, установка выглядит следующим образомУ меня есть две директории, одна называется git-worktree, в которой находится файл, который я хочу отслеживать, и другая называется git-dir, которая содержит папку .git репозитория, также называемую GIT_DIR.

Я запускаю репозиторий, запустив cd'ing в папку "git-dir" и запустив:

git --git-dir=./.git --work-tree=/Users/braitsch/Test/git-worktree/ init

Это успешно инициализирует репозиторий, и пока я нахожусь в "git-dir"В папку я могу добавлять файлы, находящиеся в рабочем дереве, запускать git status и фиксировать их.Круто.

Пинок в яйцах здесь приходит, когда я пытаюсь запустить git stash, который дает мне ошибку:

fatal: /usr/local/git/libexec/git-core/git-stash cannot be used without a working tree.

Теперь это BS, потому что я знаю (или, по крайней мере, яПодумайте, у меня есть рабочее дерево, установленное в папку "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, где они все работают?Большое спасибо за чтение.Любые идеи будут любезно оценены.

1 Ответ

8 голосов
/ 18 июня 2011
git --git-dir=<your path> --work-tree=<work tree path> stash

должно работать. Вы пробовали абсолютные пути?

UPDATE:

похоже, ошибка. Расширенная функциональность опции --git-dir была добавлена ​​только недавно, и некоторые команды, такие как git stash, еще не имеют новой реализации.

git-stash - это скрипт bash. Вы можете взломать его и удалить требуемую рабочую проверку директории, а затем перейти в рабочую папку.

...