8

我有一个很好的时间让 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 它们在哪里之后一切正常?非常感谢您的阅读。任何见解将不胜感激。

4

1 回答 1

9
git --git-dir=<your path> --work-tree=<work tree path> stash

应该管用。你试过绝对路径吗?

更新:

似乎是一个错误。--git-dir 选项的扩展功能是最近才添加的,像 git stash 这样的一些命令还没有新的实现。

git-stash 是一个 bash 脚本。您可以破解它并删除需要的工作目录检查,然后 cd 进入工作文件夹。

于 2011-06-17T23:59:55.443 回答