12k
All articles

每个开发者都应该掌握的 10 个 Git 命令

介绍十个核心 Git 命令,包括 git switch、git restore 和 git reflog,帮助开发者自信地管理日常工作流。

OpenReplay Team
OpenReplay Team
每个开发者都应该掌握的 10 个 Git 命令

Git 命令构成了现代开发工作流程的基础。无论你是将代码推送到生产环境,还是与分布式团队协作,这十个命令都能覆盖你日常工作的大部分需求。以下是你在 2025 年现代 Git 工作流程中真正需要了解的内容。

核心要点

  • 掌握 git statusgit diff,在进行更改之前了解仓库状态
  • 使用 git switchgit restore 代替旧的 git checkout,获得更清晰、更专注的命令
  • 了解 git reflog 作为你的安全网,用于恢复丢失的提交和撤销错误
  • 保持 Git 安装版本更新,以获得安全补丁和新功能

检查仓库状态

git status

在执行任何其他操作之前,git status 会告诉你当前的状态。它显示已修改的文件、暂存的更改以及工作目录中未跟踪的文件。

git status

频繁运行此命令。它可以在提交前避免意外情况,并帮助你了解 Git 看到的内容。

git diff

虽然 status 显示哪些文件发生了变化,但 diff 显示文件内部发生了什么变化。

git diff              # 未暂存的更改
git diff --staged     # 已暂存的更改

在提交前审查你的更改。这有助于及早发现错误。

暂存和提交

git add

暂存操作为下一次提交准备更改。你可以精确控制每个快照中包含的内容。

git add filename.js   # 暂存单个文件
git add .             # 暂存所有内容

如需更精细的控制,使用 git add -p 来暂存文件内的特定代码块——当你进行了多个不相关的更改时非常有用。

git commit

提交在项目历史中创建永久快照。

git commit -m "Fix authentication timeout bug"

编写清晰的提交信息。如果需要修改最后一次提交信息或添加遗漏的更改,使用 git commit --amend

使用远程仓库

git clone

克隆操作将仓库及其完整历史下载到你的本地机器。

git clone https://github.com/user/repository.git

git pull

拉取操作从远程仓库获取更改并将其合并到当前分支。

git pull origin main

注意:git pull 结合了 git fetchgit merge。如果你想在合并前检查远程更改,请先运行 git fetch

git push

推送操作将本地提交上传到远程仓库。

git push origin main

只有已提交的更改才会被推送。未提交的工作保留在本地。

分支和历史

git switch

对于分支切换,git switch 是现代方法——在 Git 2.23 中引入,现在是推荐使用的命令,取代了旧的 git checkout

git switch feature-branch      # 切换分支
git switch -c new-feature      # 创建并切换

Git switch 与 checkout 的对比:checkout 仍然可用,但它处理了太多不相关的任务(切换分支、恢复文件、分离 HEAD)。switch 只做一件事,而且很明确。请使用它。

git restore

同样,git restore 处理文件恢复——这是之前 checkout 承担的另一项任务。

git restore filename.js           # 丢弃工作目录的更改
git restore --staged filename.js  # 取消暂存文件

这种分离使得 Git 的心智模型对于 2025 年学习工具的开发者来说更加清晰。

git log

了解项目历史很重要。git log 显示当前分支的提交历史。

git log --oneline --graph    # 带分支结构的紧凑视图

--oneline 标志保持输出的可读性。添加 --graph 可以可视化分支和合并。

使用 git reflog 进行恢复

当出现问题时——这是不可避免的——git reflog 就是你的安全网。它记录每次 HEAD 的移动,即使是那些不再出现在 git log 中的提交。

git reflog

不小心重置到错误的提交?删除了一个分支?reflog 帮助你找到并恢复丢失的工作。它不是日常命令,但知道它的存在可以节省数小时的恐慌时间。

关于工作流程选择的说明

团队经常争论 merge 与 rebase。两者都整合更改,但在历史记录的呈现方式上有所不同。Merge 保留完整的分支结构。Rebase 创建线性历史。两者都不是普遍正确的——根据团队偏好和项目需求进行选择。

还值得注意的是:保持 Git 安装版本相对较新。最新版本已经解决了值得修补的安全问题。

结论

这些命令——statusdiffaddcommitclonepullpushswitchlogreflog——涵盖了开发者日常工作所需的 Git 基础知识。首先掌握这些。一旦这个基础扎实了,更高级的命令就会变得有用。

如果你还没有开始使用 switchrestore,现在就开始吧。它们反映了 2025 年 Git 命令的设计理念:专注、可预测且更易于理解。

常见问题

git fetch 和 git pull 有什么区别?

Git fetch 从远程仓库下载更改,但不会将它们合并到本地分支。Git pull 在一步中结合了 fetch 和 merge,自动将远程更改集成到当前分支。当你想在合并前审查更改时,使用 fetch。

如何在不丢失更改的情况下撤销最后一次提交?

使用 git reset --soft HEAD~1 撤销最后一次提交,同时保持所有更改处于暂存状态。如果你希望更改未暂存但仍在工作目录中,请改用 git reset HEAD~1。两种方法都会保留你的工作,同时从历史记录中删除提交。

什么时候应该使用 git switch 而不是 git checkout?

对于所有与分支相关的操作(如切换分支或创建新分支),使用 git switch。Git switch 在 Git 2.23 中引入,专门用于处理分支操作,而 checkout 仍然承担多个不相关的功能。Switch 提供了更清晰的意图并减少了混淆。

如何在 Git 中恢复已删除的分支?

运行 git reflog 找到分支在删除前指向的提交哈希值。然后使用 git branch branch-name commit-hash 重新创建分支。Reflog 默认跟踪所有 HEAD 移动约 90 天,即使在意外删除后也可以恢复。

Open-source session replay

Gain control over your UX

See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.