我正在尝试通过以下方式使用手动定义的工作树设置 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
任何想法将不胜感激!
- - - - 更新 - - - -
正如@jleedev 在下面指出的那样,尝试从工作树外部调用“git stash”时似乎确实存在错误。但是,我的解决方法是只 cd 进入工作树,然后通过首先在 gitdir 的路径之前调用 stash。不方便,我知道,但以下适用于 stash 命令:
git --git-dir="projects/proj1/.git" stash list
这个问题似乎并没有困扰其他股票命令,如添加、提交、分支等。据我所知,只是“隐藏”。
如果您希望摆脱将 .git 文件夹嵌套在工作树内的默认结构,您可能会发现以下步骤很有用:
- 创建一个您想要存储 git 存储库的目录
- 创建一个您想要保存要跟踪的文件的目录(这两个都可以在您的文件系统上的任何位置)
cd 进入您的 git 存储库文件夹并运行:
git --git-dir=. --work-tree="path-to-your-project-folder" init
这将初始化一个新的存储库并将其链接到您的外部工作树文件夹。
要运行标准的添加、删除、分支、提交命令,请 cd 进入您的 git 存储库并像往常一样运行您的命令。但是,要运行 stash,请确保 cd 进入您的工作树,然后运行 stash,正如我在上面提到的那样,在命令前面加上 gitdir 的路径。