背景
大仓库,由于开发者分支较多,我们在使用 git pull 或 git push 等命令时(与远端仓库交互的命令),不知之前配置了什么,我的电脑会必现以下报错(有非常长一大串报错-不同分支的git进程占用报错,虽然不影响开发,但是看着很奇怪)。
Another git process seems to be running in this repository, e.g.
an editor opened by ‘git commit’. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
error: Unable to create ‘/Users/xxx/.git/logs/refs/remotes/origin/feat-switch2.lock’: File exists.
分析报错信息,是由于本地存在/xxx/.git/logs/refs/remotes/origin/feat-switch2.lock文件,导致git进程失败,搜索解决方案,网上有 stackoverflow解决方案 ,但是亲身实践发现可能由于环境/git版本问题并不能解决实际问题,每次通过命令与远端仓库交互,一直会出现该问题。
解决方法
分析网上大佬们的解决方案,主要都是通过删除.lock文件,只不过.lock文件的位置不一样。所以尝试用下列的方式可以解决该问题。
find .git/logs/refs/remotes/origin/ -name "*.lock" -type f -delete
根因&长期解决思路
这个问题比较奇怪的一点是:我们明明没有开发这个分支feat-switch2,但是还会拉取远端的这个分支,为了探究这个问题,发现是IDE(Goland)的git自动更新机制。
尝试这样解除自动更新机制
Goland->Preferences->Version Control->GitToolBox->Auto Fetch
将开关关闭即可。