1、IDEA工具栏Git菜单的展开选项

一、提交与推送(本地→远程)
1. Commit... (Ctrl+K)
-
功能:打开提交对话框,提交当前更改到本地仓库
-
包含操作:
-
选择要提交的文件
-
输入提交信息
-
选择提交前操作(如运行测试、检查代码)
-
-
使用场景:完成一个逻辑更改后提交到本地历史
2. Push... (Ctrl+Shift+K)
-
功能:推送本地提交到远程仓库
-
操作流程:
-
选择要推送的分支
-
选择目标远程仓库
-
确认推送内容
-
-
使用场景:分享代码、备份、团队协作
二、更新与拉取(远程→本地)
3. Update Project... (Ctrl+T)
-
功能 :智能更新项目(JetBrains IDE特有)
-
实际执行:
-
先执行
git fetch获取远程最新信息 -
然后根据配置选择
merge或rebase -
可能包括依赖更新和其他VCS操作
-
-
使用场景:一键同步项目到最新状态
4. Pull...
-
功能:拉取远程更新并合并到当前分支
-
等效命令 :
git pull=git fetch+git merge -
与Update的区别 :
Update Project更全面,可能包含其他操作
5. Fetch
-
功能 :只获取远程更新信息,不合并
-
效果:更新远程分支引用,但不修改工作目录
-
使用场景:查看远程是否有新提交,暂不合并
三、分支与合并操作
6. Merge...
-
功能:将其他分支合并到当前分支
-
操作:选择要合并的分支,解决可能的冲突
-
使用场景:完成功能开发后合并到主分支
7. Rebase...
-
功能:变基操作,重新应用提交
-
效果:创建更线性的提交历史
-
使用场景:整理本地分支历史,同步主分支更新
8. Branches... (Ctrl+Shift+N)
-
功能 :打开分支管理面板
-
包含功能:
-
查看所有本地和远程分支
-
创建新分支
-
切换分支
-
合并、变基分支
-
删除分支
-
-
使用场景:综合管理分支工作流
9. New Branch...
-
功能:基于当前提交创建新分支
-
快速操作:输入分支名,立即创建并切换
10. New Tag...
-
功能:基于当前提交创建标签
-
使用场景:标记版本号(如v1.0.0、release-2024)
四、重置与历史查看
11. Reset HEAD...
-
功能:重置当前分支到特定状态
-
三种模式:
-
Soft:保留工作目录和暂存区更改
-
Mixed:保留工作目录更改,重置暂存区(默认)
-
Hard:丢弃所有更改,完全重置
-
-
使用场景:撤销提交,回退到历史版本
12. Show Git Log
-
功能:打开Git历史视图
-
显示内容:
-
提交历史图(分支、合并关系)
-
每次提交的详细信息
-
文件变更列表
-
-
使用场景:查看项目历史,定位问题
五、高级与工具集成
13. Patch
-
功能:创建和应用补丁文件
-
使用场景:代码分享、代码审查、离线协作
14. Uncommitted Changes
-
功能:显示所有未提交的更改
-
使用场景:快速查看待提交内容
15. Current File
-
功能:显示当前文件在Git中的状态
-
可能包括:历史、差异、Blame信息
16. GitHub
-
功能:GitHub集成操作
-
可能包括:创建PR、查看Issue、管理仓库
17. Manage Remotes...
-
功能:管理远程仓库配置
-
操作:添加、删除、修改远程仓库URL
18. Clone...
-
功能:克隆远程仓库到本地
-
使用场景:开始新项目或获取现有项目
六、快速操作
19. VCS Operations Popup... (Alt+N)
-
功能 :打开版本控制快速操作面板
-
特点:
-
弹出式菜单,不遮挡代码
-
包含最常用的Git操作
-
可自定义常用操作
-
-
使用场景:快速执行Git操作而不切换上下文
📌 核心工作流快捷键
日常开发循环
text
1. 编写代码
2. Ctrl+K # 提交更改
3. Ctrl+T # 更新项目(获取远程更新)
4. 解决冲突(如果有)
5. Ctrl+Shift+K # 推送更改
分支管理
text
1. Ctrl+Shift+N # 打开分支管理
2. 创建功能分支
3. 开发完成后切换回主分支
4. 使用 Merge... 或 Rebase... 合并
问题排查
text
1. Show Git Log # 查看历史
2. 定位问题提交
3. Reset HEAD... # 回退到稳定版本
4. 或创建修复分支
⚠️ 重要注意事项
快捷键差异
-
不同IDE可能不同:这里是JetBrains系列的默认快捷键
-
自定义:大多数IDE支持自定义快捷键
-
记忆技巧:
-
K系列:提交相关(K像钥匙Key→提交)
-
T系列:更新相关(T像拉取Pull)
-
操作安全等级
| 操作 | 危险等级 | 可恢复性 | 使用建议 |
|---|---|---|---|
| Commit | 安全 | 可修改 | 频繁使用 |
| Push | 中等 | 已共享难修改 | 确认后使用 |
| Reset Hard | 高危 | 难恢复 | 备份后使用 |
| Rebase 已推送 | 高危 | 破坏协作 | 避免使用 |
团队协作规范
-
提交前:运行测试,检查代码格式
-
推送前:先Pull更新,避免冲突
-
合并前:代码审查,确保质量
-
主分支:保护设置,禁止直接推送
🎯 最佳实践建议
快捷键使用
-
掌握核心:先掌握 Ctrl+K, Ctrl+T, Ctrl+Shift+K
-
逐步扩展:再学习分支管理 Ctrl+Shift+N
-
效率提升:使用 Alt+N 快速操作面板
工作习惯
-
小步提交:每完成一个小功能就 Ctrl+K
-
频繁更新:开始工作前 Ctrl+T 同步
-
及时推送:每天结束时 Ctrl+Shift+K 备份
-
定期整理:使用 Rebase 整理本地历史
团队协作
-
统一流程:团队使用相同的Git工作流
-
代码审查:重要更改通过PR/MR
-
清晰信息:提交信息规范统一
-
及时沟通:遇到冲突及时协调
2、在本地(左侧class)文件上右键选择 Git 时弹出的菜单

1. Commit File...
-
功能:提交当前选中的文件(或目录中的更改)
-
操作:打开提交对话框,包含:
-
暂存区文件列表
-
提交信息输入框
-
勾选要提交的文件
-
-
使用场景:提交特定文件的更改,而不是所有更改
2. + Add (Ctrl+Alt+A)
-
功能:将文件添加到暂存区(Stage)
-
操作 :
git add <filename> -
使用场景:准备提交文件前,将其标记为待提交
-
注意 :新增文件需要先
Add才能提交
二、代码审查与历史
3. Annotate with Git Blame
-
功能 :显示文件的 逐行注解(每行代码的最后修改信息)
-
显示内容:
-
每行代码的提交哈希
-
修改者
-
修改时间
-
提交信息
-
-
使用场景:
-
追踪代码变更来源
-
了解谁修改了特定代码
-
调试时查找引入问题的时间点
-
4. Show Diff
-
功能 :显示文件的当前修改(工作目录 vs 暂存区/最新提交)
-
显示方式:左右对比视图,高亮显示增删改
-
使用场景:查看自己未提交的更改
5. Compare with Revision...
-
功能 :与特定版本比较文件差异
-
操作:选择历史中的某个提交版本
-
使用场景:查看文件在某个时间点的状态
6. Compare with Branch...
-
功能 :与其他分支的同一文件比较
-
使用场景:查看不同分支间的文件差异
7. Show History
-
功能 :显示文件的完整提交历史
-
显示内容:
-
所有修改过该文件的提交列表
-
每次提交的差异
-
可以恢复到任意历史版本
-
-
使用场景:
-
追踪文件变更历程
-
查找特定变更的提交
-
8. Show Current Revision
-
功能:查看文件在当前提交中的状态
-
使用场景:查看最新提交的文件内容
9. Rollback... (Ctrl+Alt+Z)
-
功能 :撤销文件的本地修改
-
效果:将文件恢复到最近一次提交的状态
-
注意 :此操作不可撤销,会永久丢弃未提交的更改
-
使用场景:放弃错误的修改,重新开始
三、远程操作
10. Push... (Ctrl+Shift+K)
-
功能:推送当前分支到远程仓库
-
与文件相关的特殊性:从文件右键执行时,推送的是整个分支,不仅仅是该文件
11. Pull...
- 功能:拉取远程更新并合并到当前分支
12. Fetch
-
功能:获取远程更新但不合并
-
使用场景:查看远程是否有新提交,不立即合并
四、分支与合并
13. Merge...
-
功能:将其他分支合并到当前分支
-
从文件右键执行时:通常合并整个分支,而不是单个文件
14. Rebase...
- 功能:变基操作,重新应用提交
15. Branches... (Ctrl+Shift+B)
-
功能:打开分支管理界面
-
使用场景:查看、创建、切换、删除分支
16. New Branch...
- 功能:基于当前提交创建新分支
17. New Tag...
- 功能:基于当前提交创建标签(如版本号 v1.0.0)
五、高级操作
18. Reset HEAD...
-
功能:重置当前分支到特定状态
-
选项:
-
Soft:保留工作目录和暂存区更改
-
Mixed:保留工作目录更改,重置暂存区(默认)
-
Hard:丢弃所有更改,完全重置
-
-
使用场景:撤销提交,回退到历史状态
19. Stash Changes...
-
功能 :暂存当前工作目录的更改
-
效果:保存未提交的更改,恢复工作目录到干净状态
-
使用场景:临时切换分支但不想提交半成品
20. Unstash Changes...
-
功能:恢复之前暂存的更改
-
使用场景:切换回原来的工作状态
21. Manage Remotes...
-
功能:管理远程仓库配置
-
操作:添加、删除、修改远程仓库地址
22. Clone...
-
功能:克隆仓库到新目录
-
从文件右键执行时:克隆当前仓库到其他位置
📌 文件级操作实际场景
场景1:查看文件修改历史
text
1. 右键文件 → Show History
2. 查看所有相关提交
3. 点击某个提交,查看当时文件内容
4. 如果需要,可复制历史版本内容
场景2:查找问题引入者
text
1. 右键文件 → Annotate with Git Blame
2. 定位到问题代码行
3. 查看是谁在什么时间提交的
4. 点击提交哈希查看完整提交信息
场景3:撤销错误修改
text
# 方法A:仅撤销单个文件
1. 右键文件 → Rollback...
2. 确认恢复到最后提交状态
# 方法B:比对后选择性撤销
1. 右键文件 → Show Diff
2. 查看具体修改
3. 手动还原不需要的部分
场景4:比较不同版本
text
1. 右键文件 → Compare with Revision...
2. 选择历史提交(如上周的版本)
3. 查看文件变化
4. 或 Compare with Branch... 比较分支差异
⚠️ 重要注意事项
文件级操作 vs 仓库级操作
-
影响范围:
操作 影响范围 示例 文件右键操作 通常针对单个文件 Rollback、Blame、Show Diff 仓库右键操作 整个仓库或分支 Push、Pull、Merge、Rebase
Rollback 的风险
-
不可恢复:Rollback 会永久丢弃未提交的更改
-
建议先备份:重要的更改先提交或复制备份
-
替代方案 :使用
git checkout -- <file>命令恢复
Blame 的正确使用
-
不要用于指责:Git Blame 是技术工具,不是问责工具
-
协作理解:用于理解代码演变,而不是追究责任
-
历史上下文:结合 Show History 查看完整变更背景
🎯 最佳实践建议
日常文件操作
-
修改前 :先
Show History了解文件背景 -
修改中 :频繁
Show Diff检查更改 -
提交前 :
Add特定文件,避免提交不相关内容 -
问题排查 :使用
Blame和Compare定位问题
版本控制策略
-
原子提交:每个提交只解决一个问题
-
清晰信息:提交信息说明修改原因
-
及时提交:小步快跑,避免大块提交
-
定期同步:每天 Pull 远程更新
团队协作规范
-
代码审查:重要修改通过 Pull Request
-
历史追溯:使用 Blame 了解代码上下文
-
冲突预防:频繁同步,减少合并冲突
-
文档更新:代码修改时同步更新文档
3、右键点击提交记录时出现的上下文菜单

一、复制与提交操作
-
Copy Revision Number
-
快捷键:
Ctrl+Alt+Shift+C -
功能:复制该提交的完整哈希值(如
6ae021e5)到剪贴板。
-
-
Create Patch...
- 功能:将当前提交的变更导出为一个
.patch文件,可用于邮件发送或手动应用。
- 功能:将当前提交的变更导出为一个
-
Cherry-Pick
- 功能:将选中的提交单独复制到当前分支,不复制整个分支历史。
二、查看与比较
-
Checkout Revision '6ae021e5'
- 功能:将工作目录切换到该提交(进入分离头指针状态,即不在任何分支上)。
-
Show Repository at Revision
- 功能:打开文件浏览器,查看该提交时仓库的文件状态。
-
Compare with Local
- 功能:比较选中提交与当前工作目录(或当前分支)的差异。
三、历史修改与重置
-
Reset Current Branch to Here...
-
功能:将当前分支的指针移动到该提交,可选择:
-
Soft:保留工作目录和暂存区的更改。
-
Mixed:保留工作目录更改,重置暂存区(默认)。
-
Hard:丢弃所有更改,完全回退到该提交。
-
-
-
Revert Commit
- 功能:创建一个新的提交来撤销选中的提交,保留历史记录。
-
Undo Commit...
- 功能:撤销最近的一次提交,将更改放回暂存区或工作目录。
四、提交编辑与整理
-
Edit Commit Message...
-
快捷键:
F2 -
功能:修改选中提交的提交信息(需要强制推送)。
-
-
Fixup...
- 功能:将当前工作目录的更改合并到选中提交中,并保留原提交信息。
-
Squash Into...
- 功能:将选中提交合并到前一个提交中,并允许编辑提交信息。
-
Drop Commits
- 功能:删除选中的一个或多个提交(危险操作,会丢失历史)。
-
Squash Commits...
- 功能:将多个连续提交合并为一个提交。
-
Interactively Rebase from Here...
- 功能:从该提交开始交互式变基,可重新排序、编辑、合并提交。
五、推送与同步
-
Push All up to Here...
- 功能:将该提交及其之前的所有提交推送到远程仓库。
-
Branch 'origin/master'
- 功能:显示当前远程分支,可切换或合并。
六、分支与标签
-
New Branch...
- 功能:基于该提交创建一个新分支。
-
New Tag...
- 功能:基于该提交创建一个标签(常用于版本标记)。
七、导航
-
Go to Child Commit
-
快捷键:向左箭头
-
功能:在提交历史图中移动到子提交(较新的提交)。
-
-
Go to Parent Commit
-
快捷键:向右箭头
-
功能:移动到父提交(较旧的提交)。
-
使用建议
-
修改历史(如
Squash、Drop、Rebase) 仅适用于本地未推送的提交,否则会破坏协作。 -
强制推送(
Force Push) 在多人协作中需谨慎使用。 -
Cherry-Pick适用于移植单个修复或功能到其他分支。 -
Revert是安全的撤销方式,适合已推送的提交。
4、Git 分支管理界面

一、分支类型与状态
-
Local Branches(本地分支)
- 存储在本地仓库中的分支,可自由创建、切换和修改
-
Remote Branches(远程分支)
- 远程仓库(如
origin)中的分支引用,通常以origin/分支名形式显示
- 远程仓库(如
-
符号说明:
-
master:本地master分支 -
origin/master:远程master分支 -
>符号:表示当前已检出的分支(工作目录所在分支) -
_符号(如one _):可能表示该分支有未推送的提交 -
对齐关系:本地分支与对应的远程分支对齐显示
-
二、主要操作功能
1. New Branch(新建分支)
-
功能:基于当前所在提交创建一个新的本地分支
-
使用场景:开发新功能、修复 bug 时创建独立分支
-
操作流程:
-
点击
New Branch -
输入分支名称(如
feature/new-page) -
可选择是否立即切换到该分支(Checkout)
-
2. Checkout Tag or Revision...(检出标签或特定版本)
-
功能 :将工作目录切换到某个标签(如
v1.0.0)或特定提交哈希 -
注意 :切换到标签或特定提交会进入 "分离头指针" 状态(detached HEAD)
三、本地分支区域详解
显示本地分支列表,每个分支可能有以下状态:
master(主分支)
-
通常是主要开发或发布分支
-
master | origin/master表示:-
左侧:本地
master分支 -
右侧:对应的远程跟踪分支
origin/master
-
-
如果两者对齐,表示本地与远程同步
one _ 分支
-
末尾的
_符号通常表示:-
有未提交的更改,或
-
有未推送到远程的提交
-
-
对应的远程分支
origin/one显示在右侧
one_one 分支
-
没有对应的远程分支(右侧只有
>,表示这是当前分支) -
可能是纯本地分支,或尚未推送到远程
two 分支
- 类似
one_one,没有对应的远程分支
四、远程分支区域详解
显示所有远程跟踪分支(从远程仓库获取的分支引用):
origin/master
-
远程仓库
origin中的master分支的本地引用 -
每次执行
git fetch时会更新这些引用
origin/one
- 远程仓库中的
one分支
origin/ZHANG_4125-master-patch-68646
-
可能是一个特定功能分支或补丁分支
-
命名格式
用户名-分支类型-描述-编号常见于代码审查或协作场景
五、关键概念说明
1. 分支跟踪关系
-
跟踪分支:本地分支与远程分支的关联关系
-
设置跟踪后,
git pull和git push可省略分支名 -
示例:
master跟踪origin/master,git push自动推送到origin/master
2. 分支状态指示
-
同步状态:本地分支与远程分支的位置关系
-
超前:本地有未推送的提交
-
落后:远程有未拉取的提交
-
分叉:本地与远程都有独立提交
-
-
当前分支 :工作目录所在的分支(用
>标记)
3. 常见工作流程
text
1. 创建新分支:New Branch → 输入名称 → Checkout
2. 开发完成后:提交更改 → 推送到远程(首次推送需设置上游)
3. 合并分支:切换到 master → 右键选择其他分支 → Merge
4. 同步远程:定期 Fetch 或 Pull 更新远程分支信息
六、实际使用建议
分支管理策略
-
主分支保护 :
master分支通常用于发布,不应直接提交 -
功能分支 :每个新功能创建独立分支(如
feature/*) -
修复分支 :bug 修复使用
hotfix/*或fix/*前缀 -
定期清理:删除已合并的本地和远程分支
操作注意事项
-
删除远程分支:需谨慎,最好先确认是否有人在使用
-
强制推送 :避免在共享分支上使用
git push --force -
分支命名 :使用有意义的名称,如
feature/user-auth、hotfix/login-bug
协作场景
-
拉取请求/合并请求:在 GitHub/GitLab 上创建
-
代码审查 :通过分支进行,如示例中的
ZHANG_4125-*分支 -
冲突解决:在合并前确保本地分支是最新的
5、右键点击 本地主分支 (如 master 分支)时弹出的上下文菜单

1. New Branch from 'master'...
-
功能 :基于当前选中的
master分支创建一个新的本地分支 -
使用场景:
-
开始开发新功能
-
修复 bug
-
进行实验性开发
-
-
操作细节:
-
新分支的起点是当前
master分支的最新提交 -
通常会立即切换到新分支(取决于工具设置)
-
可以指定分支名称(建议使用描述性名称,如
feature/user-login)
-
-
示例 :当前在
master分支,右键选择此选项,输入feature/add-search,会创建一个从master分叉的新分支
2. Show Diff with Working Tree
-
功能 :比较
master分支最新提交与当前工作目录的差异 -
使用场景:
-
查看自上次提交以来工作目录的变更
-
确认哪些文件已被修改但尚未提交
-
准备提交前的代码审查
-
-
重要说明:
-
此操作不会切换分支,只是在当前状态下进行比较
-
如果当前不在
master分支,会比较该分支与工作目录的差异 -
显示方式通常为文件列表或逐行对比
-
3. Update
-
功能 :将本地
master分支更新到最新的远程状态 -
具体操作:
-
执行
git fetch获取远程最新信息 -
然后执行
git merge origin/master或git rebase origin/master -
注意:具体是合并(merge)还是变基(rebase)取决于工具配置
-
-
使用场景:
-
同步远程团队成员的更改
-
准备合并其他分支前的更新
-
-
与
git pull的区别:-
git pull=git fetch+git merge -
此处的
Update功能类似,但可能提供更多选项
-
4. Push...
-
功能 :将本地
master分支的提交推送到远程仓库 -
操作细节:
-
点击后会显示推送对话框
-
可以选择目标远程(通常是
origin) -
可以选择推送的分支(通常是
master) -
可以选择是否强制推送(Force Push)
-
-
使用场景:
-
将本地提交共享给团队成员
-
上传已完成的功能或修复
-
-
注意事项:
-
如果远程有更新的提交,可能需要先执行
Update -
强制推送会覆盖远程历史,多人协作时慎用
-
5. Rename...
-
功能 :重命名当前的
master分支 -
使用场景:
-
团队分支命名规范变更
-
个人偏好调整
-
项目结构调整
-
-
操作影响:
-
只重命名本地分支
-
如果需要重命名远程分支,需要额外操作:
-
重命名本地分支
-
删除远程旧分支
-
推送新分支到远程
-
设置上游跟踪关系
-
-
-
实际示例:
bash
# 重命名 master 为 main(本地) git branch -m master main # 推送新的 main 分支到远程 git push -u origin main # 删除远程的 master 分支 git push origin --delete master
📌 常见工作流程示例
场景1:开始新功能开发
-
右键
master→ New Branch from 'master'... -
输入分支名
feature/user-profile -
在新分支上开发并提交
-
完成后切换回
master -
右键
master→ Update(确保同步最新) -
合并功能分支到
master -
右键
master→ Push...(推送到远程)
场景2:同步团队代码
-
右键
master→ Update(获取并合并远程更新) -
如有冲突,解决后提交
-
继续开发或推送自己的更改
场景3:检查本地更改
-
在任意分支工作时,想对比与
master的差异 -
右键
master→ Show Diff with Working Tree -
查看差异,决定是否要合并或保存
⚠️ 重要注意事项
关于 master/main 分支
-
很多项目已从
master更名为main -
如果是
main分支,操作完全相同 -
主分支通常受保护,直接推送可能受限
推送权限
-
如果远程分支有保护规则,可能需要:
-
Pull Request/Merge Request 审批
-
代码审查
-
CI/CD 检查通过
-
冲突处理
-
Update 时可能出现合并冲突
-
需要手动解决冲突后提交
-
建议频繁更新以减少冲突复杂度
分支策略推荐
-
主分支保持稳定 :
master/main应始终可部署 -
功能分支开发:所有新功能在独立分支开发
-
定期同步 :每天至少执行一次 Update
-
小步提交:频繁提交并推送,避免大块代码堆积
6、右键点击本地非主分支 (如图中的 one 分支)时弹出的上下文菜单

一、分支切换与创建
1. Checkout
-
功能 :切换到该分支(
one) -
操作 :
git checkout one -
使用场景:
-
继续在该分支上开发
-
查看该分支的代码状态
-
-
注意:会更新工作目录为该分支的最新状态
2. New Branch from 'one'...
-
功能 :基于
one分支创建一个新分支 -
示例 :从
one创建feature/from-one -
使用场景:
-
基于某个功能分支继续开发子功能
-
创建修复分支而不影响原分支
-
3. Checkout and Rebase onto 'master'
-
功能 :两步操作合一:
-
切换到
one分支 -
将
one分支变基到master分支上
-
-
操作等效:
bash
git checkout one git rebase master -
使用场景:
-
快速同步主分支更新到功能分支
-
保持线性提交历史
-
二、代码比较
4. Compare with 'master'
-
功能 :比较
one分支与master分支的差异 -
显示:
-
所有不同的文件列表
-
具体代码行差异
-
-
使用场景:
-
查看功能分支相对于主分支的变更
-
准备合并前的代码审查
-
5. Show Diff with Working Tree
-
功能 :比较
one分支与当前工作目录的差异 -
特殊情况:
-
如果当前就在
one分支:显示未提交的更改 -
如果在其他分支:显示
one分支与该分支工作目录的差异
-
-
使用场景:
-
查看本地修改
-
比较不同分支的代码状态
-
三、分支合并与变基
6. Rebase 'master' onto 'one'
-
功能 :将
master分支的更改变基 到one分支 -
实际是 :当前分支 变基到
one分支 -
操作条件 :当前必须在
master分支才会显示此选项 -
效果:
text
变基前:one ← A ← B ← C (master) 变基后:one ← master' (包含A,B,C但基于one重新应用) -
使用场景:将主分支更新应用到功能分支(但方向与常见用法相反)
7. Merge 'one' into 'master'
-
功能 :将
one分支合并 到master分支 -
操作条件 :当前必须在
master分支 -
效果:
text
合并前:master ← X ← Y one ← A ← B 合并后:master ← X ← Y ← M (合并提交,包含A,B) -
使用场景:完成功能开发,合并到主分支
四、同步与推送
8. Update
-
功能 :更新
one分支的远程跟踪状态 -
操作:
-
git fetch origin -
git merge origin/one或git rebase origin/one
-
-
使用场景:
-
同步远程同名分支的更改
-
如果
one跟踪origin/one,则更新该关联
-
9. Push...
-
功能 :将
one分支推送到远程仓库 -
首次推送:需要设置上游分支
bash
git push -u origin one # -u 设置跟踪关系 -
使用场景:
-
备份本地分支
-
分享代码供协作或审查
-
五、分支管理
10. Rename...
-
功能 :重命名
one分支 -
操作 :
git branch -m one new-name -
注意事项:
-
如果已推送远程,需同步重命名:
-
重命名本地:
git branch -m one new-name -
删除远程旧分支:
git push origin --delete one -
推送新分支:
git push -u origin new-name
-
-
11. Delete
-
功能 :删除本地
one分支 -
保护措施:
-
如果有未合并的提交,可能会警告
-
如果当前在该分支,通常不能删除
-
-
强制删除 :
git branch -D one(大写 D) -
使用场景:
-
功能已合并,清理本地分支
-
放弃实验性分支
-
📌 实际工作流示例
场景1:功能开发完成,准备合并
text
1. 在 one 分支完成开发并提交
2. 切换到 master:右键 master → Checkout
3. 更新 master:右键 master → Update
4. 合并功能:右键 one → Merge 'one' into 'master'
5. 解决可能的冲突
6. 推送:右键 master → Push...
7. 删除功能分支:右键 one → Delete
场景2:同步主分支更新到功能分支
text
1. 在 one 分支开发中
2. 发现 master 有重要更新需要同步
3. 右键 one → Checkout and Rebase onto 'master'
4. 或手动:
- git checkout one
- git fetch origin
- git rebase origin/master
5. 解决变基冲突(如果有)
6. 继续开发
场景3:代码审查前查看变更
text
1. 在 one 分支完成功能
2. 右键 one → Compare with 'master'
3. 查看所有变更文件
4. 右键具体文件查看行级差异
5. 确认无误后推送分支
6. 创建 Pull Request
⚠️ 重要注意事项
合并 vs 变基的选择
| 操作 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Merge | 保留完整历史,操作安全 | 产生合并提交,历史不线性 | 公共分支合并,保留上下文 |
| Rebase | 历史线性整洁,便于追踪 | 重写历史,可能破坏协作 | 本地整理提交,个人分支同步 |
删除分支的风险
-
未合并删除 :使用
Delete前确保分支已合并 -
恢复误删:如果误删,可通过提交哈希恢复:
bash
git checkout -b one 6ae021e5 # 使用最后已知的提交哈希
推送冲突处理
-
如果远程有更新而本地没有:
-
先
Update(获取并合并远程更改) -
再
Push
-
-
或使用强制推送(慎用,会覆盖他人提交)
分支命名建议
-
功能分支:
feature/描述,如feature/user-auth -
修复分支:
fix/问题,如fix/login-error -
发布分支:
release/版本,如release/v1.2.0 -
热修复:
hotfix/紧急问题
🎯 最佳实践总结
-
频繁同步 :开发期间定期
Update,减少冲突 -
小步提交:每完成一个小功能就提交,便于追踪
-
及时清理:合并后删除本地和远程分支
-
保护主分支:不直接在主分支开发
-
使用Pull Request:合并前进行代码审查
7、右键点击 远程主分支 (如 origin/master)时弹出的上下文菜单

一、分支检出与创建
1. Checkout
-
功能:创建本地分支并跟踪该远程分支
-
操作 :
git checkout -b master origin/master -
效果:
-
创建本地
master分支 -
设置跟踪关系:本地
master跟踪origin/master -
切换到新创建的
master分支
-
-
使用场景:
-
首次克隆仓库后设置本地分支
-
恢复被删除的本地分支
-
切换到远程分支的最新状态
-
2. New Branch from 'origin/master'...
-
功能 :基于远程
origin/master创建新的本地分支(不切换到该分支) -
操作 :
git branch new-feature origin/master -
与 Checkout 的区别:
操作 创建分支 切换分支 设置跟踪 Checkout ✓ ✓ ✓ New Branch from... ✓ ✗ ✗ -
使用场景:
-
基于主分支创建功能分支,但保持当前工作状态
-
并行开始多个新功能开发
-
二、代码比较
3. Checkout and Rebase onto 'master'
-
功能 :两步操作:
-
创建并切换到基于
origin/master的本地分支 -
将该分支变基到本地
master分支
-
-
前提条件 :本地已有
master分支 -
使用场景:快速创建基于远程最新状态的分支并同步本地更改
4. Compare with 'master'
-
功能 :比较
origin/master与本地master分支的差异 -
显示内容:
-
文件变更列表
-
具体代码差异
-
-
使用场景:
-
查看远程是否有自己未拉取的更新
-
确认本地是否落后于远程
-
准备合并前的差异检查
-
5. Show Diff with Working Tree
-
功能 :比较
origin/master与当前工作目录的差异 -
使用场景:
-
查看自己的修改相对于远程主分支的变更
-
确认哪些是自己的新代码
-
三、同步与合并操作
6. Rebase 'master' onto 'origin/master'
-
功能 :将本地
master分支变基到origin/master -
操作条件 :当前必须在本地
master分支 -
操作等效:
bash
git checkout master git fetch origin git rebase origin/master -
效果:
text
变基前: 本地:A ← B ← C (master) 远程:A ← D ← E (origin/master) 变基后: 本地:A ← D ← E ← B' ← C' (master) (B、C在E之后重新应用) -
使用场景:整理本地提交历史,保持线性
7. Merge 'origin/master' into 'master'
-
功能 :将远程
origin/master合并到本地master分支 -
操作条件 :当前必须在本地
master分支 -
操作等效:
bash
git checkout master git fetch origin git merge origin/master -
效果:创建合并提交,保留双方的提交历史
-
使用场景:获取团队更新,保留完整合并记录
8. Pull into 'master' Using Rebase
-
功能 :使用变基方式拉取远程更新到本地
master -
操作等效:
bash
git checkout master git pull --rebase origin master -
与 Merge 的区别:
操作 历史效果 提交记录 适用场景 Merge 保留双方历史,分叉合并 有合并提交 公共分支,团队协作 Rebase 线性历史,本地提交后移 无合并提交 个人分支,整理历史 -
使用场景:希望在拉取更新时保持干净的线性历史
📌 实际工作流对比
场景1:同步团队最新代码
text
# 方法A:使用合并(保留完整历史)
1. 确保在本地 master 分支
2. 右键 origin/master → Merge 'origin/master' into 'master'
3. 结果:创建合并提交,历史清晰但可能复杂
# 方法B:使用变基(保持线性历史)
1. 确保在本地 master 分支
2. 右键 origin/master → Pull into 'master' Using Rebase
3. 结果:本地提交后移,历史线性整洁
场景2:开始新功能开发
text
# 方法A:基于最新远程代码
1. 右键 origin/master → New Branch from 'origin/master'...
2. 输入分支名 feature/new-api
3. 切换到该分支开始开发
# 方法B:基于最新且同步本地
1. 确保本地 master 是最新的
2. 右键 origin/master → Checkout and Rebase onto 'master'
3. 创建基于远程最新且与本地同步的分支
场景3:检查代码状态
text
# 查看远程与本地差异
1. 右键 origin/master → Compare with 'master'
2. 查看哪些文件在远程有更新
3. 决定是否需要拉取
# 查看自己的修改
1. 在当前分支开发中
2. 右键 origin/master → Show Diff with Working Tree
3. 查看自己的工作相对于远程主分支的变化
⚠️ 重要注意事项
变基的风险
-
历史重写 :变基会改变提交哈希,已推送的提交不要变基
-
协作影响:如果多人基于你的分支工作,变基会破坏他们的历史
-
恢复困难:变基错误可能导致复杂恢复
合并策略选择
-
团队协作 :推荐使用
Merge,历史清晰可追溯 -
个人分支 :可使用
Rebase,保持整洁 -
发布分支 :绝对使用
Merge,保留所有上下文
冲突处理流程
text
# 遇到合并/变基冲突时:
1. 工具会提示冲突文件
2. 手动解决冲突(编辑文件)
3. 标记冲突已解决:
- git add <file> # 对于每个解决的文件
4. 继续操作:
- 合并:git commit # 提交合并结果
- 变基:git rebase --continue
远程分支状态管理
bash
# 查看远程分支信息
git remote show origin
# 更新远程分支引用(不合并)
git fetch origin
# 删除本地过时的远程分支引用
git remote prune origin
# 查看所有分支关系
git log --oneline --graph --all
🎯 最佳实践建议
日常开发流程
-
开始前 :先
Compare with 'master'查看远程更新 -
定期同步 :每天至少一次
Merge或Pull远程更新 -
提交前 :
Show Diff with Working Tree检查代码 -
推送前:确保本地是最新的,避免冲突
分支管理策略
-
主分支保护:
-
禁止直接推送到
origin/master -
通过 Pull Request 合并
-
要求代码审查和测试通过
-
-
功能分支:
-
从最新
origin/master创建 -
小步频繁提交
-
及时同步主分支更新
-
工具使用技巧
-
可视化比较:利用 GUI 工具的对比视图,更直观
-
批量操作:多个文件冲突时可使用合并工具
-
历史查看 :变基前先用
git log确认提交顺序
注:针对小白的教学,欢迎大佬们指点评论!