




















在 CI/CD 环境下,团队常遇到以下错误:
1
| |
这通常是多个进程或脚本并发操作同一个 Git 仓库,导致元数据损坏或锁冲突。Git 并非为高并发本地操作设计,因此需要解决并发问题。
在自动化脚本中,例如:
1 2 | |
如果多个任务同时执行,可能导致锁冲突或元数据损坏。
通过加锁机制,让所有 Git 操作串行执行。flock 是一个简单高效的工具,专为这种场景设计。
大多数 Linux 发行版自带 flock(属于 util-linux 套件)。如果没有,可按以下方式安装:
1 2 | |
1
| |
1
| |
安装后即可使用 flock 命令。
macOS 默认不包含 flock,但可通过 Homebrew 安装兼容版本:
1
| |
安装的是 Ben Noordhuis 的 flock,语法与 Linux 版本基本一致。
提示:在 CI 服务(如 GitHub Actions)中,可在步骤中提前安装 flock。
flock 用于在 shell 脚本中对文件加锁:
1
| |
建议将锁文件放在 .git 目录下,避免污染业务代码目录。
假设有一个 deploy.sh 脚本:
1 2 3 4 | |
加锁后修改为:
1 2 3 4 5 6 7 8 | |
或者直接锁定整个脚本:
1
| |
-n:表示拿不到锁时立即退出(可选)。.git 目录下。flock 使 Git 操作串行,防止元数据损坏。flock。flock 是必备工具,简单高效!如有问题,请在评论区讨论。

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。