每个开发者都应该掌握的 10 个 Git 命令
Git 命令构成了现代开发工作流程的基础。无论你是将代码推送到生产环境,还是与分布式团队协作,这十个命令都能覆盖你日常工作的大部分需求。以下是你在 2025 年现代 Git 工作流程中真正需要了解的内容。
核心要点
- 掌握
git status和git diff,在进行更改之前了解仓库状态 - 使用
git switch和git 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 fetch 和 git merge。如果你想在合并前检查远程更改,请先运行 git fetch。
git push
推送操作将本地提交上传到远程仓库。
git push origin main
只有已提交的更改才会被推送。未提交的工作保留在本地。
Discover how at OpenReplay.com.
分支和历史
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 安装版本相对较新。最新版本已经解决了值得修补的安全问题。
结论
这些命令——status、diff、add、commit、clone、pull、push、switch、log 和 reflog——涵盖了开发者日常工作所需的 Git 基础知识。首先掌握这些。一旦这个基础扎实了,更高级的命令就会变得有用。
如果你还没有开始使用 switch 和 restore,现在就开始吧。它们反映了 2025 年 Git 命令的设计理念:专注、可预测且更易于理解。
常见问题
Git fetch 从远程仓库下载更改,但不会将它们合并到本地分支。Git pull 在一步中结合了 fetch 和 merge,自动将远程更改集成到当前分支。当你想在合并前审查更改时,使用 fetch。
使用 git reset --soft HEAD~1 撤销最后一次提交,同时保持所有更改处于暂存状态。如果你希望更改未暂存但仍在工作目录中,请改用 git reset HEAD~1。两种方法都会保留你的工作,同时从历史记录中删除提交。
对于所有与分支相关的操作(如切换分支或创建新分支),使用 git switch。Git switch 在 Git 2.23 中引入,专门用于处理分支操作,而 checkout 仍然承担多个不相关的功能。Switch 提供了更清晰的意图并减少了混淆。
运行 git reflog 找到分支在删除前指向的提交哈希值。然后使用 git branch branch-name commit-hash 重新创建分支。Reflog 默认跟踪所有 HEAD 移动约 90 天,即使在意外删除后也可以恢复。
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. Check our GitHub repo and join the thousands of developers in our community.