# Git 高频命令实战指南:从日常开发到进阶协作

前言:为什么你需要掌握命令行 Git?

在 Java 及各类后端开发中,尽管 IDEA 等 IDE 提供了强大的可视化 Git 插件,但真正的高手都习惯在终端中敲击命令。命令行不仅响应更快,而且在处理复杂合并、紧急回退、交互式变基等高级场景时,拥有可视化界面无法比拟的掌控力。本文将为你梳理日常开发中最高频、最实用的 Git 命令,助你打造丝滑的代码管理工作流。

一、 基础工作流:提交与同步

这是每天至少执行几十次的操作,必须形成肌肉记忆。

1. 查看状态与差异

  • git status:随时掌握工作区、暂存区和仓库的状态。
  • git diff:查看工作区未暂存的具体代码修改。
  • git diff --staged:查看已暂存但还未提交的修改(提交前必查)。

2. 暂存与提交

  • git add <file> / git add .:将指定文件或当前目录所有变更添加到暂存区。
  • git commit -m "feat: 新增用户登录接口":提交代码。强烈建议 遵循语义化提交规范(如 feat, fix, refactor),让提交历史一目了然。
  • git commit --amend -m "new message":如果刚提交完发现漏了文件或者注释写错,用这个命令可以合并到上一次提交中(注意:未推送前使用)。

3. 远程同步

  • git pull origin <branch>:拉取远程最新代码并自动合并。
  • git push origin <branch>:将本地分支推送到远程。
  • git push -u origin <branch>:首次推送新分支时使用,自动建立本地与远程的跟踪关系,后续直接 git push 即可。

二、 分支管理:隔离开发与合并

现代开发离不开分支模型(如 Git Flow 或 Trunk Based)。

  • git checkout -b feature/user-logingit switch -c feature/user-login:创建并切换到新分支(推荐 Git 2.23+ 引入的 switch 命令,语义更清晰)。
  • git branch -d feature/user-login:删除已合并的本地分支。
  • git merge feature/user-login:将特性分支合并到当前分支(如 developmain)。
  • git cherry-pick <commit-hash>高频救场命令。当你只需要另一个分支上的某一次或几次提交,而不想合并整个分支时,用它精准"摘取"提交。

三、 撤销与回退:后悔药的正确吃法

写错代码、推错分支是常态,掌握以下命令能让你从容应对:

1. 工作区与暂存区撤销

  • git restore <file>:丢弃工作区的修改,恢复为暂存区状态(替代了老式的 git checkout -- <file>)。
  • git restore --staged <file>:将文件从暂存区移出,保留工作区的修改。

2. 提交历史回退

  • git reset --soft HEAD~1:撤销最后一次提交,但保留所有修改在暂存区。适合重新组织提交。
  • git reset --mixed HEAD~1:撤销提交并清空暂存区,修改保留在工作区(默认行为)。
  • git reset --hard HEAD~1危险操作! 彻底撤销提交并丢弃所有修改。仅在确认代码完全不需要时,在本地分支使用。
  • git revert <commit-hash>:生成一个新的提交 来撤销指定提交的修改。这是处理已推送到远程的公共分支错误的唯一安全方式。

四、 进阶技巧:提升协作效率

1. 变基(Rebase):打造线性历史

  • git rebase main:将当前分支的提交"接"到 main 分支的最新节点之后。
  • 核心价值:消除无意义的 merge commit,让提交历史像一条直线一样整洁。
  • 铁律永远不要在公共分支(如 main, develop)上执行 rebase,只在你个人的特性分支上使用。

2. 储藏(Stash):临时切换任务

当你正在写一半代码,突然被要求修复一个紧急 Bug:

  • git stash save "正在开发登录逻辑":将当前未完成的修改暂存起来,工作区瞬间干净。
  • git checkout hotfix/bug-123:切换分支修 Bug。
  • git stash pop:修完 Bug 切回来,恢复之前的开发进度。

3. 忽略文件(.gitignore)

在项目根目录创建 .gitignore 文件,将编译产物(如 /target/)、IDE 配置文件(如 .idea/)和日志文件加入其中,避免污染代码仓库。

总结

Git 的强大在于其分布式的设计和丰富的操作空间。对于 Java 开发者而言,熟练掌握 cherry-pickrebasestashreset/revert 的区别,是区分"会用 Git"和"精通 Git"的分水岭。建议在日常开发中刻意练习这些命令,逐步摆脱对可视化界面的依赖。

相关推荐
PBitW2 小时前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
PBitW2 小时前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
北极糊的狐6 小时前
钉钉小程序 Git 版本管理完整流程
git·小程序·钉钉
Fzuim15 小时前
当 AI 也成为提交者:ThinkFlow 的 Git 提交规范,是怎么定的
git·agent·thinkflow
CodexDave1 天前
数据库连接池耗尽:排查顺序与三层兜底
服务器·前端·数据库·git·云原生·容器·kubernetes
乐观的Terry1 天前
5、发布系统-Git 集成
大数据·git·elasticsearch
不怕犯错,就怕不做1 天前
GIT的简单打patch应用format-patch and git am
linux·git·全文检索
Byron Loong1 天前
【Git】如何检查 Ubuntu 系统上 gitLab 是否开启
git·ubuntu·gitlab
lar_slw1 天前
git删除上一次提交
git