mag*_*nty 5 git bash github git-status
我目前维护一个针对bash的git-prompt的项目(https://github.com/magicmonty/bash-git-prompt),我刚收到一个bug报告(https://github.com/magicmonty/bash-git -prompt/issues/97)来自与Docker合作的人,他告诉我,每次使用提示时,缓存都会失效,因为.git目录经常被触及.
我已经调查了这一点,并发现它是git status触及.git目录的命令.似乎只有目录条目本身和没有内容被触及.任何人都可以解释,为什么需要这个,或者这可能是Git中的一个错误.
有没有办法显示所有状态信息,而无需触及.git目录?
谢谢您的帮助
更新:
由于使用该git status命令的全部原因是,为了确定未跟踪文件的数量,我将其替换为git ls-files --others --exclude-standard | wc -l,不需要锁定.
strace git status显示此操作使用锁定文件.git/index.lock,这.git就是更新mtime 的原因.
git很酷,它使用环境变量GIT_INDEX_FILE来决定使用哪个锁文件.如果未设置,则git使用.git/index(这是默认值),但如果设置,则git使用其值.来自man git:
GIT_INDEX_FILE此环境允许指定备用索引文件.如果未指定,
$GIT_DIR/index则使用默认值.
所以:
GIT_INDEX_FILE=banana git status
Run Code Online (Sandbox Code Playgroud)
不会更新你.git的mtime.
因此,您现在必须做出决定,无论您是否想要沿着这条路走(当然有很多警告).
祝好运!