# 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"的分水岭。建议在日常开发中刻意练习这些命令,逐步摆脱对可视化界面的依赖。

相关推荐
福如意如我心意16 小时前
git清除仓库敏感文件并同步至远端的操作
git
Brilliantwxx20 小时前
【Linux】 开发|Git 版本控制与 gdb/cgdb 调试
linux·笔记·git
.Hypocritical.2 天前
Git 全套实操|配置 /.gitignore/ 分支合并 / 冲突解决 /git stash 完整教程
git
来日方长。。。。long2 天前
Hermes Agent橙皮书共读|第三篇:保姆级实战部署|本地/VPS从零搭建Hermes
ide·git·hermes
其实防守也摸鱼2 天前
VS Code Git 工作树:解锁多分支并行开发新体验
数据库·git·安全·oracle·架构·自动化
ERD Online2 天前
我们怎么设计 good first issue:让第一个 PR 两小时内合入
数据库·git·后端·开源·issue
Python私教2 天前
Codex 自动写 Commit 够安全吗?一套证据化 Git 提交流程
人工智能·git·后端
果果燕2 天前
实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译
linux·arm开发·c++·笔记·git
美味蛋炒饭.2 天前
Git 版本控制(下)
开发语言·git·学习·总结·后端开发
互联网中的一颗神经元2 天前
09 — .git 地图:打开那个隐藏文件夹
大数据·git·elasticsearch