我有时间让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他们在哪里工作?非常感谢阅读。任何见解都将得到慷慨的赞赏。
答案 0 :(得分:8)
git --git-dir=<your path> --work-tree=<work tree path> stash
应该有效。你尝试过绝对路径吗?
更新:
似乎是一个错误。最近才添加了--git-dir选项的扩展功能,而git stash等命令还没有新的实现。
git-stash是一个bash脚本。你可以破解它并删除需要工作的dir检查然后cd进入工作文件夹。