gpt4 book ai didi

git-stash 找不到工作树

转载 作者:太空狗 更新时间:2023-10-29 13:01:49 24 4
gpt4 key购买 nike

我正在尝试通过手动定义的工作树设置一个 git 存储库:

cd /Users/braitsch/repos/project1
git --git-dir=. --work-tree=/Users/braitsch/projects/project1 init

运行上面的命令后,我可以添加位于“/Users/braitsch/projects/project1”的文件
通过:git add somefile 或 git add。
提交工作正常,调用“git branch”也是如此

但是,git stash list 会抛出以下错误:

fatal: /usr/local/Cellar/git/1.7.4.4/libexec/git-core/git-stash cannot be used without a working tree.

用户定义的工作树不支持存储吗?

git config --local core.worktree
echoes out : /Users/braitsch/projects/project1

如有任何想法,我们将不胜感激!

--------更新--------

正如@jleedev 在下面指出的那样,在尝试从工作树外部调用“git stash”时确实存在错误。然而,我的解决方法是只 cd 进入工作树,然后首先在 gitdir 的路径之前调用 stash。不方便,我知道,但以下适用于 stash 命令:

git --git-dir="projects/proj1/.git" stash list

这个问题似乎并没有困扰其他常用命令,如添加、提交、分支等。据我所知,只是“stash ”。

如果您希望摆脱将 .git 文件夹嵌套在工作树中的默认结构,您可能会发现以下步骤很有用:

  1. 创建一个目录,用于存储您的 git 存储库
  2. 创建一个目录,用于 stash 要跟踪的文件(这两者都可以在您的文件系统上的任何位置)
  3. 进入您的 git 存储库文件夹并运行:

      git --git-dir=. --work-tree="path-to-your-project-folder" init

    这将初始化一个新的存储库并将其链接到您的外部工作树文件夹。

要运行标准的添加、删除、分支、提交命令,请 cd 进入您的 git 存储库并像往常一样运行您的命令。然而,要运行 stash,请务必 cd 到你的工作树,然后运行 ​​stash,正如我在上面提到的,在命令前面加上你的 gitdir 的路径。

最佳答案

这要么是命令行为中的错误,要么是它的错误报告。需要工作树并作为脚本实现的命令1使用此命令验证其存在:

git rev-parse --is-inside-work-tree

如果您实际上不在工作树内部,这将失败,这与错误消息所暗示的相反。另一方面,用 C 实现的命令调用 setup_work_tree,它会自动 chdir 进入工作树。我不知道是否可以安全地更改 git-sh-setup 中的 require_work_tree 函数以匹配它。

1。 git-am.sh git-bisect.sh git-mergetool.sh git-pull.sh git-rebase--interactive.sh git-rebase.sh git-stash.sh git-submodule.sh

关于git-stash 找不到工作树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com