gpt4 book ai didi

git - 如何在不修改 .git/index 的情况下运行 git status - 例如在 PROMPT_COMMAND 中

转载 作者:行者123 更新时间:2023-12-04 03:02:59 26 4
gpt4 key购买 nike

我有一个使用 git status 显示 git 分支信息的 PROMPT_COMMAND,不幸的是,当调用“git status”时,它似乎正在修改 .git/index 文件。

这并不好,因为如果您与对目标目录具有权限的用户一起运行(例如在共享文件系统上,或者如果您以特权帐户运行) - 它最终会更改该文件的所有权给你的用户,因为 git 似乎正在重新创建 .git/index 文件。

有什么方法可以运行“git status”以防止它修改 .git/index 文件?

最佳答案

如果您的 Git 版本至少为 2.15,请运行 git --no-optional-locks status。参见 commit 27344d6a6c8056664966e11acf674e5da6dd7ee3 ,它添加了这个新选项。

否则,如果您可以在运行 git status 之前确保索引是最新的,git status 将不会再次更新它;但这有点棘手。或者,您可以暂时将索引设置为只读——但这会干扰并行运行的其他 git 命令——或者您可以将索引复制到临时索引并运行 git statusGIT_INDEX_FILE 设置为临时文件的路径名,然后删除临时文件。最后一个很笨拙,但可以与历史 Git 一起使用。

(顺便说一下,我没有从 my own hand-rolled status-constructing bash prompt code 运行 git status ,虽然这不是专门为了这个原因。相反,我运行了一个明确的 git update-index,您可以以牺牲性能为代价省略它,可能基于 $PWD。)

关于git - 如何在不修改 .git/index 的情况下运行 git status - 例如在 PROMPT_COMMAND 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47436939/

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