Git:不要为只读操作创建index.lock

Mic*_*upp 10 git lockfile

有没有办法强制git不为只读操作创建index.lock git status?

我在tmux中显示工作树的状态,每隔几秒钟更新一次.基本上我解析输出git status --branch --ignored --porcelain和一些其他命令.问题是,对于大型存储库,git status可能需要几秒钟才能完成.在此期间,我无法运行任何其他git命令,因为存储库已被锁定.

编辑:

以下是我的tmux系列相关部分的一些图片.从左到右的符号说明:

与远程分支同步| 2阶段变化| 1个未分级的变更| 5个忽略的文件| 1个藏匿条目: 在此输入图像描述

与远程分支同步| 工作树没有变化| 5个忽略的文件: 在此输入图像描述

提前远程分支1提交| 工作树没有变化| 5个忽略的文件: 在此输入图像描述

kan*_*kan 9

使用"GIT_INDEX_FILE"环境变量使git使用另一个索引文件是什么意思?

所以,要从HEAD使用创建一个新的索引文件

GIT_INDEX_FILE=.git/other-index git reset
Run Code Online (Sandbox Code Playgroud)

在它之后你可以

GIT_INDEX_FILE=.git/other-index git status
Run Code Online (Sandbox Code Playgroud)

查找更改.

它的缺点是,如果主索引将被add/rm命令修改,你将看不到真实的状态.但至少它会让你发现一个变化的事实,然后可能会做更多的东西来找出真正的差异.

你能描述一下你想要实现的更多目标吗?可能我们可以提出一些其他解决方案.

另一个想法.试试这个:

cp .git/index .git/other-index # or maybe just "ln" once, rather than copying everytime?
GIT_INDEX_FILE=.git/other-index git status
Run Code Online (Sandbox Code Playgroud)

不确定这有多可靠...如果cp你在做的时候发生命令git add/rm,你可能会有"损坏"的索引文件,显然会失败,但是为了你的使用我相信它已经足够了 - 你可以忽略它失败并重试.