我有一个很好的时间让 git 与我的用户定义的工作树合作,该工作树存在于包含我的 .git 目录的文件夹之外。
基本上设置是这样的:我有两个目录,一个名为“git-worktree”,其中包含我要跟踪的文件,另一个名为“git-dir”,其中包含存储库的 .git 文件夹,即 GIT_DIR。
我通过cd进入文件夹“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-dir 的父目录,则Git stash 将起作用,例如,如果我将工作树设置为我的主目录。
core.worktree=/Users/braitsch/
所以我对你们的问题是我缺少什么设置来告诉 git 允许我的工作树存在于文件系统上的任何位置,而不仅仅是沿着 git-dir 的父路径备份到根目录?当然,必须有一种方法可以将您的 git-dir 和您的工作树放置在您想要的任何地方,并且在告诉 git 它们在哪里之后一切正常?非常感谢您的阅读。任何见解将不胜感激。