提升 Git 工作效率:必备命令行工具和图形界面

深入了解必备命令行工具和图形界面工具,解锁更高效的 Git 工作流。本文涵盖日常任务中使用的核心 Git 命令,例如分支、合并和协作,然后介绍强大的实用工具,如用于交互式管理的 `lazygit`、用于增强 diff 的 `delta` 以及用于历史记录重写的 `git-filter-repo`。了解这些扩展以及配置技巧和安全最佳实践如何简化您的版本控制、提高代码质量并提升生产力。

38 浏览量

增强 Git 工作流程:必备的命令行工具和图形界面 (GUI)

Git 作为一个快速、可扩展的分布式版本控制系统,构成了现代软件开发工作流程的基石。虽然其核心命令行界面提供了对版本控制的强大控制,但理解和利用其广泛的命令集,以及专业的命令行工具和图形用户界面 (GUI),可以显著提高生产力并简化复杂任务。本文将引导您了解日常使用的基本 Git 命令,深入探讨扩展 Git 功能的强大命令行实用程序,并简要介绍图形界面,以优化您的版本控制体验。

无论您是 Git 新手,还是希望完善工作流程的经验丰富的用户,掌握这些工具都将使您能够更高效地浏览仓库、深入了解项目历史记录并与团队更有效地协作。我们将探索实用的命令、交互式基于文本的用户界面 (UI) 以及旨在使您的 Git 之旅更顺畅、更有洞察力的专业实用程序。

核心 Git 工作流程:基础命令行操作

Git 提供了一套丰富的命令集,分为面向最终用户的“瓷器”(porcelain) 级高层命令和面向脚本及内部对象管理的“管道”(plumbing) 级底层命令。在这里,我们将重点介绍日常任务所需的基础瓷器命令。

仓库入门

要开始一个新项目或加入现有项目,这些命令是您的起点:

  • 初始化一个新的 Git 仓库:
    bash git init
  • 从 URL 克隆现有仓库:
    bash git clone <url>

管理更改(暂存和提交)

在提交之前,Git 使用一个“暂存区”(也称为索引 Index)来准备更改。这让您可以精细地控制每次提交中包含的内容。

  • 将特定文件添加到暂存区:
    bash git add <file>
  • 将所有未跟踪和已修改的文件添加到暂存区:
    bash git add .
  • 交互式地暂存文件的一部分(代码块):
    bash git add -p
  • 移动或重命名文件:
    bash git mv <old> <new>
  • 从工作目录和暂存区中删除文件:
    bash git rm <file>
  • 从 Git 跟踪中移除文件,但不从文件系统中删除它:
    bash git rm --cached <file>
  • 取消暂存特定文件:
    bash git reset <file>
  • 取消暂存所有更改:
    bash git reset
  • 检查工作目录和暂存区的状态:
    bash git status

一旦更改被暂存,您就可以提交它们了:

  • 提交暂存的更改(打开编辑器输入信息):
    bash git commit
  • 带消息提交暂存的更改:
    bash git commit -m 'Your commit message'
  • 直接提交所有已跟踪的、未暂存的更改(修改跳过 git add):
    bash git commit -am 'Your commit message'

分支和合并

分支是 Git 分布式特性的基础,允许并行开发。合并 (Merging) 和变基 (Rebasing) 是集成更改的方式。

  • 切换到现有分支:
    bash git switch <name> # 或(旧语法) git checkout <name>
  • 创建并切换到新分支:
    bash git switch -c <name> # 或(旧语法) git checkout -b <name>
  • 列出所有本地分支:
    bash git branch
  • 按最近提交时间排序显示分支:
    bash git branch --sort=-committerdate
  • 删除本地分支(仅当已合并时):
    bash git branch -d <name>
  • 强制删除本地分支(即使未合并):
    bash git branch -D <name>
  • 将一个分支合并到当前分支:
    bash git merge <branch-to-merge>
  • 将一个分支合并到当前分支并形成单个提交(压缩合并):
    bash git merge --squash <branch-to-merge> git commit -m 'Squashed commit message'
  • 将当前分支变基到另一个分支上(会重写历史):
    bash git rebase <base-branch>

与远程仓库协作

Git 在协作环境中表现出色,通过推送 (pushing) 和拉取 (pulling) 远程仓库的更改来实现协作。

  • 添加一个新的远程仓库:
    bash git remote add <name> <url>
  • 将当前分支推送到其远程跟踪分支:
    bash git push
  • 首次推送新分支,设置上游跟踪:
    bash git push -u origin <name>
  • 强制推送(请极端谨慎使用,会覆盖远程历史):
    bash git push --force-with-lease
  • 从远程仓库拉取更改(不将它们集成到本地分支):
    bash git fetch origin main
  • 拉取更改然后将它们合并到当前分支:
    bash git pull origin main # 或(如果设置了跟踪分支) git pull
  • 拉取更改然后将当前分支变基:
    bash git pull --rebase

检查历史记录和差异

了解哪些内容发生了变化以及是谁做出的更改,对于调试和审查至关重要。

  • 显示所有暂存和未暂存更改的摘要:
    bash git diff HEAD
  • 仅显示暂存的更改差异:
    bash git diff --staged
  • 仅显示未暂存的更改差异:
    bash git diff
  • 查看提交日志(各种选项):
    ```bash
    git log # 完整日志
    git log --graph # 历史记录的 ASCII 艺术树
    git log --oneline # 每条提交的简洁单行显示
    git log # 特定文件的历史记录
    git log --follow # 包括重命名的历史记录
    git log -G