我正在尝试通过以下方式设置一个带有手动定义的工作树的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”时似乎存在错误。但是我的解决方法是只需cd进入工作树,然后首先在gitdir的路径前面调用stash。不方便,我知道,但以下适用于stash命令:
git --git-dir="projects/proj1/.git" stash list
这个问题似乎没有困扰其他股票命令,如添加,提交,分支等。就我所知,只是“藏匿”。
如果您希望摆脱将.git文件夹嵌套在工作树中的默认结构,您可能会发现以下步骤非常有用:
cd进入你的git repository文件夹并运行:
git --git-dir=. --work-tree="path-to-your-project-folder" init
这将启动一个新的存储库并将其链接到您的外部工作树文件夹。
运行标准的添加,删除,分支,提交命令,cd进入您的git存储库并像往常一样运行命令。 但是,要运行存储,请确保进入您的工作树,然后运行存储,如上所述,将命令作为gitdir路径的前缀。
答案 0 :(得分:6)
这可能是命令行为中的错误或错误报告。需要工作树并以脚本 1 实现的命令使用此命令验证其存在:
git rev-parse --is-inside-work-tree
如果您实际上在工作树中,则会失败,这与错误消息所暗示的相反。另一方面,在C中实现的命令调用setup_work_tree
,它会自动chdir
进入工作树。 require_work_tree
中的git-sh-setup
函数是否可以安全地更改为匹配,我不知道。
1。 git-am.sh git-bisect.sh git-mergetool.sh git-pull.sh git-rebase--interactive.sh git-rebase.sh git-stash.sh git-submodule.sh
答案 1 :(得分:0)
编辑:
尝试将GIT_WORK_TREE环境变量设置为指向合适的文件夹。
原始答案:
这有点奇怪的命令。试试这个。这更容易:
mkdir yourRepo
cd yourRepo
git init
.. edit some files
git add .
git commit -m "First commit"
答案 2 :(得分:0)
我使用git for Windows 1.8.3通过ConEmu遇到了这个。
我的问题似乎与我将C:
驱动器上的路径映射到P:\
git在提示符下将映射驱动器的路径识别为 /p
,但git config --local core.worktree
的设置正在返回P:/
我使用 git config --local core.worktree /p
重置了它,它给了我p:/
作为新值,但固定的存储。好像它不喜欢资本驱动信。
原来我只需要cd /c
然后cd /p
就可以通知我已进入工作树目录。不确定为什么git对cd
很敏感,但是在初始化shell时无法检测到我在适当的位置。