10 个秘密 Git 命令,每周帮你节省 5 个小时以上

2025-05-24

10 个秘密 Git 命令,每周帮你节省 5 个小时以上

说实话,Git 就像一把双刃剑。一方面,它是现代软件开发的支柱。另一方面,它又像一座迷宫,即使是经验丰富的开发人员也会感到头疼。当然,你了解一些基本命令:git clonegit commit、 和 ,git push这些都是你的日常工作。但如果我告诉你,Git 中还有一大堆大多数开发人员从未接触过的命令呢?

这些隐藏的宝藏可以帮你节省时间,解决棘手的问题,让你看起来像个 Git 大师。准备好升级了吗?让我们深入研究10 个被低估的 Git 命令,它们将彻底改变你的版本控制工作方式。


1.:Gitgit restore的撤销按钮

我们都经历过这种情况——你正埋头苦写代码,突然意识到某个文件搞乱了。也许是你不小心暂存了某些内容,或者做了一些不想保留的更改。这时,它就能帮你git restore解救这一切。

# Discard changes in a file  
git restore <file-name>  

# Unstage a file (but keep the changes)  
git restore --staged <file-name>  
Enter fullscreen mode Exit fullscreen mode

真实世界的例子:

有一次,我意外地暂存了一个我本不打算包含的大型日志文件。我没有慌乱,而是git restore --staged取消暂存了它,而没有丢失其他更改。危机终于避免了!

优点:它比旧版的git checkout或更简洁、更直观,git reset适合处理这些任务。可以把它想象成 Git 版的 Ctrl+Z。


2. git switch:更智能的分支切换方式

如果您曾经使用过git checkout分支切换工具,您就会知道它就像一把瑞士军刀——功能太多了。这就是它的git switch用武之地。它专为分支操作而设计,让您的工作流程更顺畅、更直观。

# Switch to an existing branch  
git switch <branch-name>  

# Create and switch to a new branch  
git switch -c <new-branch-name>  
Enter fullscreen mode Exit fullscreen mode

为什么它很棒:它就像拥有一个专门用于分支管理的工具,而不是一个有时感觉对你不利的多用途工具。


3.git sparse-checkout更聪明地工作,而不是更努力地工作

在大型的 monorepo 中工作?克隆整个仓库感觉就像下载互联网一样。使用git sparse-checkout,您可以只检出所需的文件或目录,从而节省磁盘空间并加快工作流程。

# Enable sparse checkout  
git sparse-checkout init --cone  

# Add specific directories  
git sparse-checkout set <dir1> <dir2>  
Enter fullscreen mode Exit fullscreen mode

真实世界的例子:

在我上一份工作中,我们有一个包含超过 10GB 数据的 monorepo。使用git sparse-checkout,我能够只处理前端目录,从而将克隆时间从 20 分钟缩短到 1 分钟以内。

优点:它非常适合不需要整个代码库的大型项目。你可以把它想象成挑选文件,而不是分支。


4 git range-diff.:像专业人士一样比较提交范围

您是否曾尝试比较某个分支或补丁系列的两个版本?这就像大海捞针。它可以git range-diff显示不同提交范围之间的差异,让您更轻松地审查复杂的更改。

git range-diff <commit-range-1> <commit-range-2>  
Enter fullscreen mode Exit fullscreen mode

优点:它彻底改变了代码审查和 rebase 工作流程。再也不用费力地查看代码差异来找出变化了。


5 git notes.:将元数据附加到提交中,避免混乱

有时,提交消息并不够。您可能需要添加内部注释、提醒或上下文,同时又不使提交历史记录杂乱无章。这时,Gitgit notes就派上用场了。它允许您为提交附加注释,这些注释仅在 Git 日志中可见。

# Add a note to a commit  
git notes add -m "Your note here" <commit-hash>  

# View notes  
git log --show-notes  
Enter fullscreen mode Exit fullscreen mode

真实世界的例子:

在一个团队项目中,我经常git notes添加一些提醒,来解释为什么做出某些决定。这有助于我们保持一致,而不会污染提交历史记录。

为什么它很棒:它就像在你的提交上留下便签一样 - 有用,不引人注目且易于管理。


6.:git worktree同时在多个分支上工作

来回切换分支很麻烦。如果可以同时在多个分支上工作会怎么样?有了git worktree,您可以为每个分支创建单独的目录,这样就不必不断地切换上下文了。

# Create a new worktree for a branch  
git worktree add ../new-directory <branch-name>  

# List all worktrees  
git worktree list  
Enter fullscreen mode Exit fullscreen mode

优点:就像你的代码拥有多个工作区一样。无需再处理分支,只需并行工作流。


7.git bisect像侦探一样寻找漏洞

想要精确定位 bug 的来源?git bisect它就像你的调试时光机。它会对你的提交历史记录进行二分查找,找到导致问题的确切提交。

# Start bisect  
git bisect start  

# Mark a commit as bad  
git bisect bad  

# Mark a commit as good  
git bisect good <commit-hash>  

# Reset when done  
git bisect reset  
Enter fullscreen mode Exit fullscreen mode

真实世界的例子:

我曾经git bisect追踪过一个导致我们应用崩溃的 bug。结果发现它只是三个月前引入的一行代码。如果没有它git bisect,我可能得花几个小时手动检查提交。

为什么它很棒:它就像您的团队中有一名侦探,可以帮助您以外科手术般的精确度追踪错误。


8. git replace:在不破坏现状的情况下改写历史

是否需要在不重新定基的情况下修复历史提交?git replace允许您创建覆盖原始提交的替换提交,而无需更改提交哈希。

# Create a replacement commit  
git replace <old-commit-hash> <new-commit-hash>  
Enter fullscreen mode Exit fullscreen mode

优点:这是一种非破坏性的方式来修复历史记录中的错误。可以将其视为对提交的隐秘编辑。


9 git fsck.:查找并修复存储库损坏

担心存储库的完整性?git fsck检查存储库中的错误并帮助您恢复丢失的对象。

git fsck --full  
Enter fullscreen mode Exit fullscreen mode

优点:它是你抵御仓库损坏的第一道防线。可以把它想象成 Git 版的健康检查。


10 git alias.:创建你自己的 Git 命令

厌倦了输入长命令?git alias可以为您最喜欢的 Git 操作创建快捷方式。

# Add an alias  
git config --global alias.co checkout  

# Use the alias  
git co <branch-name>  
Enter fullscreen mode Exit fullscreen mode

优点:自定义 Git,完美契合你的工作流程。就像创建你自己的版本控制秘籍一样。


深入探究:掌握git bisect

让我们仔细看看git bisect,它是 Git 中最强大但未被充分利用的命令之一。想象一下这样的场景:

  • 您的应用程序崩溃了,但您不知道原因。
  • 上个月还没有这个漏洞,但现在却出现了。
  • 您有数百条提交需要筛选。

无需手动检查每个提交,而是git bisect自动执行该过程。其工作原理如下:

A)开始二分会话:

   git bisect start  
Enter fullscreen mode Exit fullscreen mode

B)将当前提交标记为“坏”:

   git bisect bad  
Enter fullscreen mode Exit fullscreen mode

C)标记已知的“良好”提交(例如,上个月的提交):

   git bisect good <commit-hash>  
Enter fullscreen mode Exit fullscreen mode

D) Git 会自动检出中间的提交。测试你的应用并将其标记为“好”或“坏”:

   git bisect good  # or git bisect bad  
Enter fullscreen mode Exit fullscreen mode

E) 重复此操作,直到 Git 找到导致错误的确切提交。

专业提示:您可以通过编写脚本来测试每个提交,从而自动化此过程。例如:

git bisect run ./test-script.sh  
Enter fullscreen mode Exit fullscreen mode

最后的想法

Git 不仅仅是commitpushpull。这些隐藏的宝藏可以节省您的时间,解决复杂问题,并使您成为更高效的开发者。无论您是使用 进行调试git bisect,使用 管理多个分支git worktree,还是使用 清理历史记录git replace,这些命令都是您的秘密武器。

所以,下次你再被 Git 的难题困住的时候,记住:肯定有对应的命令可以解决。祝你编码愉快,合并永远无冲突!🚀


关于 ArpitStack

我热衷于创建创新的开源解决方案,以简化和增强开发人员的工作流程。ArpitStack.com我的个人作品集,我在这里展示我的作品,包括SecretStackCloudStack等项目。

欢迎随意浏览我的GitHub Repos,寻找创新解决方案。如果您觉得我的工作很有价值,请考虑通过GitHub 赞助商或请我喝杯咖啡来支持我。非常感谢您的支持 ❤️!

文章来源:https://dev.to/arpitstack/10-secret-git-commands-that-will-save-you-5-hours-every-week-1mpn
PREV
20 个必备编码模式助你在下一次编码面试中脱颖而出
NEXT
React 状态管理还能比这更简单吗?