【JAVA开发】—— Git常用操作

1. Git

Git 是一款分布式版本控制系统(DVCS),由Linus Torvalds为管理Linux内核开发而设计,相比集中式版本控制系统(如SVN),它无需依赖中央服务器即可完成大部分操作,核心优势是轻量、快速、离线工作能力和强大的分支管理,是目前软件开发领域最主流的版本控制工具,广泛用于个人项目、团队协作、开源项目的代码管理。

  • 追踪代码变更,完整记录开发历史
  • 支持多人协作开发,避免代码冲突
  • 灵活的分支管理,支持并行开发
  • 版本快速回滚,恢复错误修改
  • 离线工作,无需持续连接远程仓库

1.1 Git 基础配置

Git安装完成后,首要任务是配置用户信息(用户名和邮箱),这会关联到每一次代码提交记录;同时可配置默认编辑器、换行符等优化使用体验。Git配置分为全局配置 (所有项目生效)和局部配置(仅当前项目生效),优先级:局部配置 > 全局配置。

bash 复制代码
# 1. 全局配置(所有项目生效,推荐优先配置)
# 配置用户名(关联提交记录)
git config --global user.name "Your Name"
# 配置邮箱(关联Git平台账号,如GitHub/Gitee/GitLab)
git config --global user.email "your.email@example.com"

# 2. 局部配置(仅当前项目生效,覆盖全局配置)
# 进入项目目录后执行
git config user.name "Team Name"
git config user.email "team.email@example.com"

# 3. 配置默认编辑器(替换为vim/nano/VSCode等,示例为VSCode)
git config --global core.editor "code --wait"

# 4. 配置换行符(解决跨平台换行符问题,Windows/Linux/Mac统一)
# Windows系统
git config --global core.autocrlf true
# Linux/Mac系统
git config --global core.autocrlf input

# 5. 查看配置信息
# 查看所有配置(全局+局部)
git config --list
# 查看指定配置项(如用户名)
git config user.name
# 查看全局配置
git config --global --list

# 6. 删除配置项
# 删除全局用户名配置
git config --global --unset user.name
# 删除局部邮箱配置
git config --unset user.email

1.2 Git 基础操作

基础操作是Git使用的核心,涵盖代码仓库初始化、代码暂存、提交、状态查看等核心流程,是日常开发中最频繁使用的命令。

bash 复制代码
# 1. 初始化本地仓库(创建新项目时)
# 在项目根目录执行,生成.git隐藏目录(仓库核心文件)
git init

# 2. 克隆远程仓库(已有远程仓库时)
# 克隆默认分支(如main/master)
git clone https://github.com/your-name/your-project.git
# 克隆指定分支
git clone -b dev https://github.com/your-name/your-project.git
# 浅克隆(仅拉取最新版本,减少下载体积,适合大仓库)
git clone --depth 1 https://github.com/your-name/your-project.git

# 3. 查看文件状态(工作区/暂存区差异)
# 简洁输出(适合熟悉Git的开发者)
git status -s
# 详细输出(推荐新手)
git status

# 4. 将文件添加到暂存区
# 添加指定文件
git add README.md
# 添加指定目录
git add src/
# 添加所有修改/新增文件(不包含删除)
git add .
# 添加所有修改/新增/删除文件
git add -A

# 5. 提交暂存区文件到本地仓库
# 基础提交(需输入提交信息)
git commit
# 带提交信息的提交(推荐,规范:类型: 描述)
git commit -m "feat: 新增用户登录功能"
# 跳过暂存区,直接提交已跟踪文件的修改
git commit -am "fix: 修复登录参数校验问题"
# 修改最后一次提交(未推送到远程时使用)
git commit --amend -m "feat: 新增用户登录功能(补充注释)"

# 6. 查看提交日志
# 基础日志
git log
# 简洁日志(一行显示)
git log --oneline
# 显示最近n次提交
git log -n 5
# 显示提交记录+文件变更统计
git log --stat
# 图形化显示分支历史(推荐)
git log --graph --oneline --all
# 查看指定文件的提交历史
git log README.md

# 7. 查看文件差异
# 查看工作区与暂存区的差异
git diff
# 查看指定文件的差异
git diff README.md
# 查看暂存区与本地仓库最新提交的差异
git diff --cached
# 查看两次提交之间的差异(示例:commit1和commit2)
git diff commit1_id commit2_id

1.3 Git 分支操作

分支是Git的核心特性,支持并行开发(如功能分支、修复分支),避免主线代码(main/master)被污染,是团队协作的基础。

bash 复制代码
# 1. 查看分支
# 查看本地分支(*标记当前分支)
git branch
# 查看本地+远程分支
git branch -a
# 查看分支详细信息(最后一次提交、上游分支)
git branch -vv

# 2. 创建分支
# 创建新分支(基于当前分支)
git branch dev
# 创建并切换到新分支(推荐)
git checkout -b feature/user-info
# 基于指定提交创建分支
git branch hotfix/bug-123 commit_id

# 3. 切换分支
# 传统切换命令
git checkout dev
# 新版Git推荐的切换命令(更直观)
git switch main

# 4. 合并分支
# 切换到目标分支(如main)
git checkout main
# 合并指定分支(如dev)到当前分支
git merge dev
# 快速合并(无冲突时,保持提交历史线性)
git merge --ff dev
# 禁止快速合并(强制生成合并提交,保留分支记录)
git merge --no-ff dev -m "merge: 合并dev分支的用户功能"

# 5. 解决分支冲突
# 冲突发生时,先查看冲突文件
git status
# 手动编辑冲突文件(找到<<<<<<< HEAD、=======、>>>>>>> dev标记,修改后保存)
# 解决冲突后,重新添加并提交
git add .
git commit -m "fix: 解决dev与main分支的合并冲突"

# 6. 删除分支
# 删除本地已合并的分支
git branch -d dev
# 强制删除本地未合并的分支(谨慎使用)
git branch -D feature/unused
# 删除远程分支
git push origin --delete dev

1.4 Git 远程仓库操作

远程仓库(如GitHub、Gitee、GitLab)是团队协作的核心载体,负责同步本地代码与远程代码,实现多人共享。

bash 复制代码
# 1. 查看远程仓库关联信息
# 查看远程仓库名称和地址
git remote -v
# 查看指定远程仓库的详细信息
git remote show origin

# 2. 关联远程仓库(本地仓库初始化后)
git remote add origin https://github.com/your-name/your-project.git

# 3. 修改远程仓库地址
git remote set-url origin https://gitee.com/your-name/your-project.git

# 4. 拉取远程代码
# 拉取远程默认分支最新代码并合并(等同于git fetch + git merge)
git pull origin main
# 拉取并重新基址(保持提交历史整洁,推荐)
git pull --rebase origin main

# 5. 推送本地代码到远程
# 推送指定分支
git push origin dev
# 首次推送时,建立本地分支与远程分支的跟踪关系
git push -u origin feature/pay
# 强制推送(谨慎使用,会覆盖远程提交)
git push -f origin dev

# 6. 删除远程仓库关联
git remote remove origin

# 7. 拉取远程新分支到本地
# 先拉取远程所有分支信息
git fetch origin
# 切换到远程新分支(自动创建本地对应分支)
git checkout -b dev origin/dev

1.5 Git 撤销与回滚操作

开发过程中难免出现错误提交、错误修改,Git提供多种撤销/回滚方式,适配不同场景(工作区、暂存区、本地仓库、远程仓库)。

bash 复制代码
# 1. 撤销工作区的修改(未add)
# 撤销指定文件的修改
git checkout -- README.md
# 撤销所有工作区修改
git checkout .

# 2. 撤销暂存区的修改(已add未commit)
# 将暂存区文件退回工作区
git reset HEAD README.md
# 退回所有暂存区文件
git reset HEAD .

# 3. 回滚本地仓库的提交(已commit未push)
# 方式1:保留修改(回滚到指定提交,修改回到工作区)
git reset --soft commit_id
# 方式2:不保留修改(彻底回滚,谨慎使用)
git reset --hard commit_id
# 方式3:回滚到上一次提交(常用)
git reset --hard HEAD^
# 回滚到上n次提交(示例:上2次)
git reset --hard HEAD~2

# 4. 撤销已推送的提交(已push到远程,谨慎使用)
# 方式1:创建反向提交(推荐,保留历史)
git revert commit_id
git push origin main
# 方式2:强制回滚(覆盖远程,团队协作时需通知所有人)
git reset --hard commit_id
git push -f origin main

# 5. 暂存工作区修改(临时切换分支时使用)
# 暂存当前工作区所有修改
git stash
# 查看暂存列表
git stash list
# 恢复最近一次暂存(保留暂存记录)
git stash apply
# 恢复最近一次暂存并删除暂存记录(推荐)
git stash pop
# 恢复指定暂存(示例:stash@{1})
git stash apply stash@{1}
# 删除指定暂存
git stash drop stash@{0}
# 清空所有暂存
git stash clear

1.6 Git 标签操作

标签(Tag)用于标记重要版本(如v1.0.0、v2.1.0),是发布版本的核心标识,相比分支更稳定,不会随代码修改而变化。

bash 复制代码
# 1. 创建标签
# 创建轻量标签(仅标记版本,无附加信息)
git tag v1.0.0
# 创建附注标签(包含作者、日期、备注,推荐)
git tag -a v1.0.0 -m "v1.0.0 正式发布:包含用户登录、支付功能"
# 为指定提交创建标签
git tag -a v0.9.0 commit_id -m "v0.9.0 测试版本"

# 2. 查看标签
# 查看所有标签
git tag
# 查看指定标签详情
git show v1.0.0

# 3. 推送标签到远程
# 推送指定标签
git push origin v1.0.0
# 推送所有标签
git push origin --tags

# 4. 删除标签
# 删除本地标签
git tag -d v1.0.0
# 删除远程标签
git push origin --delete v1.0.0

# 5. 检出标签(创建分支基于标签版本)
git checkout -b release/v1.0.0 v1.0.0

1.7 Git 配置文件与核心配置项

Git的配置文件分为三级(局部、全局、系统),优先级从高到低,核心配置项决定Git的使用行为,是优化Git体验的关键。

txt 复制代码
Git配置文件层级(优先级:局部 > 全局 > 系统)
├─ 局部配置:项目根目录/.git/config(仅当前项目生效)
├─ 全局配置:用户目录/.gitconfig(所有项目生效)
└─ 系统配置:/etc/gitconfig(系统所有用户生效)
配置分类 核心作用 关键参数 / 关键词
user 提交者身份配置(用户名/邮箱) user.name、user.email
core 核心行为配置(编辑器/换行符) core.editor、core.autocrlf
remote 远程仓库关联配置 remote.origin.url、remote.origin.fetch
branch 分支跟踪配置 branch.main.remote、branch.main.merge
alias 命令别名配置(简化常用命令) alias.st=status、alias.co=checkout
bash 复制代码
# 配置常用命令别名(提升效率)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.lg "log --graph --oneline --all --decorate"
# 使用别名:git st 等同于 git status,git lg 查看图形化日志

1.8 Git 常用命令汇总

命令分类 常用命令 说明
配置 git config --global user.name/email git config --list 配置用户信息、查看配置
基础操作 git init/clone git add/commit git status/diff/log 初始化/克隆、暂存/提交、状态/差异/日志
分支操作 git branch/checkout/switch git merge git branch -d/-D 分支创建/切换、合并、删除
远程操作 git remote add/set-url/remove git pull/push git fetch 远程关联、拉取/推送、获取远程信息
撤销回滚 git checkout -- file git reset HEAD git reset --hard git revert 工作区/暂存区撤销、版本回滚、反向提交
标签操作 git tag -a git push origin tag git tag -d 创建附注标签、推送标签、删除标签
进阶操作 git stash/stash pop git cherry-pick git rebase 暂存修改、挑选提交、重新基址

总结

  1. Git的核心价值是分布式版本控制和分支管理,Java开发中需优先配置全局用户信息,别名配置可大幅提升操作效率。
  2. 分支操作遵循"功能分支开发、主线分支合并"原则,合并冲突需手动解决后重新提交。
  3. 撤销/回滚需区分场景:工作区/暂存区用checkout/reset,本地未推送用reset,远程已推送优先用revert(保留历史)。
  4. 标签是版本发布的核心标识,推荐使用附注标签(-a)并推送至远程仓库,便于版本追溯。
相关推荐
坏柠2 小时前
ESP32-S3 的 I²C:从“能连设备”到“工程上用得顺”
c语言·开发语言
Swift社区2 小时前
Python 图片验证码库推荐与实践指南
开发语言·python
进击的小头2 小时前
C语言实现设计模式的核心基石
c语言·开发语言·设计模式
Yupureki2 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-递归初阶
c语言·开发语言·数据结构·c++·算法·visual studio
有谁看见我的剑了?2 小时前
Python更换依赖包下载源
开发语言·python
Java程序员威哥2 小时前
云原生Java应用优化实战:资源限制+JVM参数调优,容器启动快50%
java·开发语言·jvm·python·docker·云原生
多多*2 小时前
程序设计工作室1月21日内部训练赛
java·开发语言·网络·jvm·tcp/ip
Engineer邓祥浩2 小时前
设计模式学习(15) 23-13 模版方法模式
java·学习·设计模式
茶本无香2 小时前
设计模式之四:建造者模式(Builder Pattern)详解
java·设计模式·建造者模式