我很难让 Git 与我现有的用户定义工作树合作outside包含我的 .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.
现在这是无稽之谈,因为我知道(或者至少我认为)我已将工作树设置为包含我要跟踪的文件的“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 存储将起作用如果我将工作树设置为 git-dir 的父目录例如如果我将工作树设置为我的主目录。
core.worktree=/Users/braitsch/
所以我的问题是我缺少什么设置来告诉 Git 允许我的工作树存在anywhere在文件系统上,不仅仅是沿着 git-dir 的父路径备份到根目录?当然,一定有一种方法可以将你的 git-dir 和你的工作树放在你想要的任何地方,并且在告诉 Git 它们在哪里之后,让一切正常工作?