Я пытаюсь настроить git-репозиторий с заданным вручную рабочим деревом с помощью:
cd /Users/braitsch/repos/project1
git --git-dir=. --work-tree=/Users/braitsch/projects/project1 init
После запуска вышеупомянутого я могу добавить файлы, расположенные в "/ Users / braitsch / projects / project1"
через: git add somefile или git add.
Коммиты работают нормально, как и звонки в "git branch"
Однако git stash list
выдает следующую ошибку:
фатально: /usr/local/Cellar/git/1.7.4.4/libexec/git-core/git-stash не может
использоваться без рабочего дерева.
Не поддерживается ли копирование в определяемых пользователем рабочих деревьях?
git config --local core.worktree
echoes out : /Users/braitsch/projects/project1
Любые мысли приветствуются!
-------- UPDATE --------
Как заметил @jleedev ниже, при попытке вызвать git stash за пределами рабочего дерева, похоже, есть ошибка. Однако мой обходной путь заключается в том, чтобы просто перейти в рабочее дерево и затем вызвать stash, сначала пройдя путь к gitdir. Неудобно, я знаю, но для команды stash работает следующее:
git --git-dir="projects/proj1/.git" stash list
Эта проблема, похоже, не изводит другие стандартные команды, такие как add, commit, branch и т. Д. Насколько я могу судить, просто "прятать".
Если вы хотите отойти от структуры по умолчанию, в которой ваша папка .git вложена в ваше рабочее дерево, вам могут пригодиться следующие шаги:
- создайте каталог, в котором вы хотите хранить свой репозиторий git
- создайте каталог, в котором вы хотите хранить файлы, которые вы собираетесь отслеживать
(оба они могут быть где угодно в вашей файловой системе)
перейдите в папку вашего репозитория git и запустите:
git --git-dir=. --work-tree="path-to-your-project-folder" init
Это запустит новый репозиторий и свяжет его с вашей внешней папкой рабочего дерева.
Для запуска стандартных команд добавления, удаления, ветвления, фиксации, cd в свой репозиторий git и запуска своей команды как обычно.
Однако, чтобы запустить stash, обязательно перейдите на ваше рабочее дерево и затем запустите stash, как я уже отмечал выше, предварительно указав в команде путь к вашему gitdir.