Git Stash& Worktree Woes

时间:2011-06-17 23:40:36

标签: git git-stash

我有时间让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他们在哪里工作?非常感谢阅读。任何见解都将得到慷慨的赞赏。

1 个答案:

答案 0 :(得分:8)

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

应该有效。你尝试过绝对路径吗?

更新:

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

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