企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

Git又有新命令了:掌握这10个新命令,轻松解决日常难题

wudianyun 2025-01-27 00:38:43 精选文章 13 ℃

引言

作为一名开发者,你一定遇到过使用 Git 的种种烦恼:随着项目体积变大,操作变得越来越慢;切换分支时不小心覆盖了修改;面对庞大的 monorepo 项目难以下手。

幸好,Git 也在不断升级与进化,带来新功能,让我们的开发体验更加顺畅。本文为你总结了 10个实用但容易被忽略的 Git 命令,帮你更高效地管理代码和项目!

Git 的基础操作请参考:程序员必备!15个超实用的Git命令,助你高效管理代码


1. git switch - 更安全的分支切换

在 Git 2.23 之前,git checkout 是切换分支的万能命令,但它还涉及其他操作,容易误触。

git switch 专注于分支切换,操作更安全、更清晰:

# 切换到其他分支
git switch feature-branch

# 创建并切换到新分支

git switch -c new-branch

好处: 减少误操作的风险,不再担心覆盖当前文件!


2. git restore - 安全地撤销文件更改

以往撤销更改,通常用 git checkout 或 git reset,但容易混乱甚至影响分支状态。git restore 专注于文件恢复,操作简单直观:

# 丢弃工作区的更改
git restore main.js

# 撤销暂存区的更改
git restore --staged main.js

好处: 安全撤销文件修改,不影响分支或提交状态。


3. git maintenance - 自动优化仓库健康

当项目变大,执行 git status、git log 等操作会变慢。Git 2.29 引入 git maintenance,自动维护仓库健康:

# 开启自动维护
git maintenance start

# 立即清理和优化
git maintenance run

优化内容:

o 垃圾回收:清理无用对象(如删除分支时残留的提交)。

o 重新打包:合并分散的包文件,提高存储效率。

o 提交图更新:加速 git log 和 git blame 等操作。


4. git sparse-checkout - 高效管理大仓库

在大规模 monorepo 中,克隆整个仓库很费时,但你可能只需要某几个目录。Git 2.25 推出了 git sparse-checkout:

# 启用稀疏检出模式
git sparse-checkout init

# 仅拉取特定目录
git sparse-checkout set services/ docs/

好处: 拉取所需的目录,节省时间和磁盘空间。


5. git log --remerge-diff - 轻松理解合并提交

合并提交通常只显示哪些分支合并了,但无法直观看到具体改动。Git 2.35 引入了 --remerge-diff 参数:

git log --remerge-diff

用途: 回放合并策略,清晰展示合并带来的改动,方便调试和审查复杂的合并历史。


6. git blame --ignore-rev - 忽略格式化提交

团队进行批量格式化时,git blame 可能失去意义,因为每一行都指向格式化的提交。

# 忽略指定提交
git blame --ignore-rev <commit-hash>

还可以设置一个文件保存所有需要忽略的提交:

# 添加到忽略文件
echo <commit-hash> >> .git-blame-ignore-revs

# 配置 Git 使用该文件
git config blame.ignoreRevsFile .git-blame-ignore-revs

好处: 保留真正的代码作者信息。


7. git range-diff - 比较提交历史变化

当你进行 rebase 或修改历史后,如何查看新旧提交的具体差异?git range-diff 让你一目了然:

git range-diff

用途: 清楚了解历史如何演变,特别适合特性分支的开发和修复。


8. git worktree - 同时处理多个分支

频繁切换分支会中断工作流。git worktree 让你在同一仓库中创建多个工作目录:

# 为特定分支创建一个新目录
git worktree add ../feature-branch feature-branch

# 删除工作目录
git worktree remove ../feature-branch

好处: 同时在多个分支上工作,互不影响,效率倍增!


9. git rebase --update-refs - 自动更新引用

Rebase 后,旧提交会被替换,但分支引用可能未更新。Git 2.38 的 --update-refs 参数解决了这个问题:

git rebase --update-refs

用途: 自动同步相关分支和标签,避免手动更新的麻烦。


10. git commit --fixup 和 git rebase --autosquash - 轻松修复提交

发现某个提交需要修复?不用手动编辑历史!使用 git commit --fixup 和 git rebase --autosquash:

# 针对特定提交创建修复提交
git commit --fixup=<commit-hash>

# 在交互式 rebase 中自动合并修复提交
git rebase -i --autosquash <base-branch>

好处: 自动整理提交历史,让代码更加干净整洁!


总结

这些 Git 命令可以大大提升你的开发效率,让你在处理大型项目、分支管理、历史回溯时更加得心应手。建议从当前工作流中最需要的命令开始尝试,你会惊讶于效率的提升!

快试试这些宝藏命令,让你的 Git 技巧更上一层楼!

最近发表
标签列表