10 个机密 Git 下令,每周可为您节省 10+ 小时

打印 上一主题 下一主题

主题 1036|帖子 1036|积分 3108

Git 感觉就像一把双刃剑。一方面,它是当代软件开辟的支柱。另一方面,它是一个迷宫般的下令,即使是经验丰富的开辟人员也会摸不着头脑。当然,您了解底子知识:、 和 是您的生计。但是,假如我告诉你,大多数开辟人员从未接触过一整套 Git 下令呢?
  git clonegit commitgit push  
这些隐藏的 gem 可以节省您的时间,办理棘手的题目,并使您看起来像一个 Git 向导。准备好升级了吗?让我们深入了解 10 个被低估的 Git 下令,它们将改变您使用版本控制的方式。

1.Git 的撤消按钮git restore

我们都经历过这种环境 — 您正沉浸在代码中,突然间您意识到您搞砸了一个文件。也许您无意中暂存了某些内容,或者您做出了不想保存的更改。输入 ,你最好的新朋友。git restore
  1. # Discard changes in a file  
  2. git restore <file-name>  
  3. # Unstage a file (but keep the changes)  
  4. git restore --staged <file-name>  
复制代码
真实天下的例子:
我曾经不小心暂存了一个我不想包含的大量日记文件。我过去没有手忙脚乱,而是在不丢失其他更改的环境下取消暂存它。制止了危机!git restore --staged
为什么它很棒:它比旧的或用于这些任务的更简洁、更直观。可以将其视为 Git 的 Ctrl+Z 版本。git checkoutgit reset

2.更改分支的更智能方法git switch

假如您曾经更换过分支,您就会知道它有点像瑞士军刀——它能做太多事变。这就是进来的地方。它专为分支机构运营而构建,使您的工作流程更顺畅、更直观。git checkoutgit switch
  1. # Switch to an existing branch  
  2. git switch <branch-name>  
  3. # Create and switch to a new branch  
  4. git switch -c <new-branch-name>  
复制代码
为什么它很棒:这就像拥有一个用于分支管理的专用工具,而不是一个有时感觉对您倒霉的多功能工具。
3.更智慧地工作,而不是更努力地工作git sparse-checkout

在大型 monorepo 中工作?克隆整个存储库就像下载 Internet 一样。使用 ,您可以仅签出所需的文件或目录,从而节省磁盘空间并加快工作流程。git sparse-checkout
  1. # Enable sparse checkout  
  2. git sparse-checkout init --cone  
  3. # Add specific directories  
  4. git sparse-checkout set <dir1> <dir2>  
复制代码
真实天下的例子:
在我的上一份工作中,我们有一个拥有超过 10GB 数据的 monorepo。使用 ,我能够只处理前端目录,将我的克隆时间从 20 分钟缩短到不到一分钟。git sparse-checkout
为什么它很棒:它非常得当不需要整个存储库的大型项目。将其视为 cherry-pick 文件,而不是分支。

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

有没有实验过比较一个分支或补丁系列的两个版本?这就像大海捞针一样。 显示提交范围之间的差异,从而更轻松地查察复杂的更改。git range-diff
  1. git range-diff <commit-range-1> <commit-range-2>  
复制代码
为什么它很棒:它改变了代码审查和变基工作流程的游戏规则。不再眯着眼睛看 diff 试图弄清楚发生了什么变革。

5.将元数据附加到提交,而不会造成混乱git notes

有时,提交消息是不够的。也许你需要添加内部品评、提示或上下文,而不会使提交历史变得混乱。这就是进来的地方。它允许您将注释附加到提交,仅在 Git 日记中可见。git notes
  1. # Add a note to a commit  
  2. git notes add -m "Your note here" <commit-hash>  
  3. # View notes  
  4. git log --show-notes  
复制代码
真实天下的例子:
在团队项目中,我曾经添加有关做出某些决定的原因的提示。它帮助我们保持在同一页面上,而不会污染提交历史。git notes
为什么它很棒:这就像在你的提交上留下便签 - 有用、不引人注目且易于管理。

6.同时处理多个分支git worktree

往返切换分支是一种痛楚。假如您可以同时处理多个分支会怎样?使用 ,您可以为每个分支创建单独的目录,因此您不必不停切换上下文。git worktree
  1. # Create a new worktree for a branch  
  2. git worktree add ../new-directory <branch-name>  
  3. # List all worktrees  
  4. git worktree list  
复制代码
为什么它很棒:这就像为您的代码设置多个工作区。不再需要杂耍分支,只有并行工作流。

7.像侦探一样寻找 Bug git bisect

试图查明何时引入错误? 是您的调试时间呆板。它会对您的提交历史纪录执行二进制搜刮,以查找导致题目简直切提交。git bisect
  1. # Start bisect  
  2. git bisect start  
  3. # Mark a commit as bad  
  4. git bisect bad  
  5. # Mark a commit as good  
  6. git bisect good <commit-hash>  
  7. # Reset when done  
  8. git bisect reset  
复制代码
真实天下的例子:
我曾经追踪过导致我们的应用程序崩溃的错误。原来是三个月前引入的一行代码。假如没有 ,我将花费数小时手动查抄提交。git bisectgit bisect
为什么它很棒:这就像您的团队中有一名侦探,帮助您以外科手术般的精度追踪错误。

8.在不破坏事物的环境下改写历史git replace

需要修复历史提交而不变基? 允许您创建覆盖原始提交的更换提交,而无需更改提交哈希。git replace
  1. # Create a replacement commit  
  2. git replace <old-commit-hash> <new-commit-hash>  
复制代码
为什么它很棒:这是修复您历史纪录中的错误的一种非破坏性方法。可以将其视为对提交的隐蔽编辑。

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

担心堆栈完备性? 查抄存储库是否存在错误并帮助您规复丢失的对象。git fsck
  1. git fsck --full  
复制代码
为什么它很棒:这是防止堆栈损坏的第一道防线。可以将其视为 Git 版本的运行状态查抄。

10.创建您自己的 Git 下令git alias

厌倦了输入长下令? 允许您为自己喜欢的 Git作创建快捷方式。git alias
  1. Add an alias  
  2. git config --global alias.co checkout  
  3. # Use the alias  
  4. git co <branch-name>  
复制代码
为什么它很棒:自定义 Git 以完美适应您的工作流程。这就像创建自己的版本控制作弊码一样。

深入探讨:掌握 git bisect

让我们过细看看 ,这是最强盛但未被充分利用的 Git 下令之一。想象一下这个场景:git bisect


  • 您的应用崩溃了,您不知道为什么。
  • 这个错误在上个月不存在,但现在就在这里。
  • 你有数百个提交需要筛选。
无需手动查抄每个提交,而是自动执行该过程。以下是它的工作原理:git bisect
A) 启动中分会话:
  1. git bisect start  
复制代码
B) 将当前提交标志为 “bad”:
  1. git bisect bad  
复制代码
C) 标志一个已知的 “good” 提交(例如,上个月提交):
  1. git bisect good <commit-hash>  
复制代码
D) Git 会自动签出中心的提交。测试您的应用并将其标志为“好”或“坏”:
  1. git bisect good  # or git bisect bad  
复制代码
E) 重复,直到 Git 辨认出引入 bug 简直切提交。
专业提示:您可以通过编写脚原来测试每个提交来自动执行此过程。例如:
  1. git bisect run ./test-script.sh  
复制代码

最后的思索

Git 不但仅是 、 和 。这些隐藏的 Gems 可以节省您的时间,办理复杂的题目,并使您成为更高效的开辟人员。无论你是使用 举行调试 、使用 管理多个分支,照旧使用 清算历史纪录,这些下令都是你的机密武器。commitpushpullgit bisectgit worktreegit replace
以是,下次你陷入 Git 的兔子洞时,请记住:可能有一个下令可以做到这一点。编码舒畅,愿您的合并永远无辩论!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表