如何在不修改.git/index的情况下运行git状态 - 例如在提示_command中



我有一个提示_command使用git状态显示git分支信息,不幸的是,当调用'git状态'时,它似乎正在修改.git/index文件。

这不好给您的用户,因为Git似乎正在重新创建.git/index文件。

是否有任何方法可以运行" git状态",以防止其修改.git/index文件?

如果您的git版本至少为2.15,则运行git --no-optional-locks status。请参阅COMMIT 27344D6A6C8056664966EACF674E5DA6DD7EE3,添加了此新选项。

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

(顺便说一句,我不从自己的手卷状态构建的bash提示代码运行git status,尽管不是专门为此原因。相反,我运行一个明确的git update-index性能,也许基于$PWD。)

运行git status不修改索引文件。

$ ls -l .git/index
-rw-r--r-- 1 adelsbergerm 1049089 445386 Jul 11 15:07 .git/index
$ git status
On branch REDACTED
Your branch is ahead of 'origin/REDACTED' by 211 commits.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   REDACTED
no changes added to commit (use "git add" and/or "git commit -a")
$ ls -l .git/index
-rw-r--r-- 1 adelsbergerm 1049089 445386 Jul 11 15:07 .git/index

您的主张还怀疑修改文件将更改所有权。

我想您 没有人听说阅读文件会自动写入其中并写入文件自动声称其所有权,但除非看来这些是观察错误,否则您需要在其他地方寻找问题。

最新更新