解决git add . + git commit之后文件状态还是M 问题

在每次 git add .git commit -m "" 之后,都会有很多文件依旧保持M状态。

原因是每次我使用了husky+commitlint,我的pre-commit里面运行了代码格式化工具,

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

pnpm run format

在这里插入图片描述

  • 方法一 可以改成
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

pnpm run format
git add .
  • 方法二 手动执行 pnpm run format
pnpm run format
git status
git diff
  • 方法三
git commit -m "your message" --no-verify
在使用 Git 进行版本控制时,`git add .` 和 `git commit -m` 操作执行缓慢可能由多种原因导致,以下是对这些原因的分析及优化方法。 ### 1. `git add .` 执行缓慢的原因及优化 #### 原因分析 - **文件数量庞大**:如果项目中存在大量文件(例如成千上万个文件),Git 需要遍历整个目录结构并计算每个文件的哈希值,这一过程会消耗较多时间。 - **文件体积过大**:某些文件(如大型二进制文件)会显著增加 `git add .` 的处理时间,因为 Git 需要压缩和存储这些文件的内容。 - **文件系统性能问题**:在某些文件系统(如网络文件系统或虚拟机共享文件夹)中,文件读取速度较慢,导致 `git add .` 操作延迟。 - **Git 配置问题**:默认情况下,Git 使用 `core.preloadindex` 和 `core.fsyncObjectFiles` 等配置来优化性能,但如果配置不当,可能会导致性能下降。 #### 优化方法 - **排除不必要的文件**:通过 `.gitignore` 文件排除不需要版本控制的文件,例如日志文件、编译输出目录、缓存文件等,以减少 Git 需要处理的文件数量。 - **避免提交大型文件**:如果项目中包含大型文件,建议使用 `git-lfs`(Git Large File Storage)来管理这些文件。`git-lfs` 会将大文件存储在远程服务器上,而本地仅保留指针文件,从而提升性能。 - **优化 Git 配置**:可以尝试调整以下 Git 配置以提高性能: ```bash git config core.preloadindex true git config core.fsyncobjectfiles false ``` 这些配置可以减少 Git 在添加文件时的 I/O 操作,从而加快 `git add .` 的速度。 ### 2. `git commit -m` 执行缓慢的原因及优化 #### 原因分析 - **提交历史复杂**:如果项目的历史提交记录非常复杂(例如存在大量合并提交或文件重命名),Git 在生成新的提交时需要进行额外的计算,导致 `git commit -m` 执行缓慢。 - **钩子脚本(Hook)**:如果项目中配置了 `pre-commit` 或 `commit-msg` 等钩子脚本,这些脚本可能会在提交时执行额外的操作(如代码格式化、静态检查等),从而增加提交时间。 - **文件索引更新**:`git commit -m` 会触发 Git 更新索引文件,如果索引文件较大或文件系统性能较差,可能会导致提交速度下降。 #### 优化方法 - **简化提交历史**:如果项目的历史提交记录过于复杂,可以考虑使用 `git rebase` 或 `git merge --squash` 来简化提交历史,减少 Git 在提交时的计算量。 - **优化钩子脚本**:检查项目中的钩子脚本,确保其不会执行不必要的操作。如果钩子脚本过于复杂,可以尝试优化其逻辑或将其移除(如果不需要)。 - **使用 `git commit --no-verify` 跳过钩子**:如果需要快速提交代码,可以使用 `git commit --no-verify -m "commit message"` 命令跳过钩子脚本,从而加快提交速度。 ### 3. 其他性能优化建议 - **升级 Git 版本**:某些旧版本的 Git(如引用中提到的 Git 1.8.3)可能存在性能问题。建议升级到最新版本的 Git,以获得更好的性能和功能支持[^2]。 - **使用 SSD 硬盘**:Git 的性能与磁盘 I/O 密切相关。使用 SSD 硬盘可以显著提升 Git 的操作速度。 - **清理 Git 缓存**:定期运行 `git gc` 命令清理 Git 缓存,可以减少 Git 的存储开销并提升性能。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值