Git进阶指南:掌握这10个新命令,轻松解决日常难题

最新的10个Git命令
最新的10个Git命令

引言

作为一名开发者,你一定遇到过使用 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 checkoutgit 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

优化内容:

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

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

提交图更新:加速 git loggit 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 --fixupgit rebase --autosquash

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

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

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

总结

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

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

滚动至顶部