IDEA可视化Log理解Git仓库\历史状态\commit\分支
IDEA可视化Log理解Git仓库\历史状态\commit\分支
from:https://github.com/tintinng/advanced-git/tree/master
fork from:https://github.com/hcsp/advanced-git
ref:https://xiedaimala.com/courses
什么是仓库?
仓库是指一个历史可追溯(tracked)的文件集合,可以把该文件集合的任意一个历史状态变更看成是一个单位,图中的一个个小圆点即为该仓库的某个历史状态变更。
这个历史状态变更时如何产生的?
通过commit,每一次commit就会生成一个commit对象,产生一次历史状态变更。因此这一个个小圆点也可以看成是一个个commit对象。
如何标识这个历史状态变更?
- Commit对象的SHA-1
- 分支(branch)
- HEAD指针
- tag标签
什么是分支?分支和历史状态变更的关系,分支和仓库的关系
- 分支是一个指向叶子节点的指针,每个节点都是一个历史状态变更。叶子节点可以理解为最新的历史状态变更。
- 一个分支包括多个历史状态变更(节点),可以在本分支的各个历史状态变更(节点)中穿梭。
- 一个仓库通常有各种分支错综复杂,IDEA 可视化log中可以可以查看各个分支之间的关系。单个分支,select几个分支和所有分支:
各个分支之间有什么关系?
- 多个分支可以合并,产生一个新的历史状态变更。例:我正在master分支上,要把fixbug分支上的变更内容合并过来。我(master分支)的历史状态变更向前推进一个,fixbug分支还停留在原来的历史状态变更上。
git merge fixbug
- 可以切换当前的工作分支,即从一个分支可以切换到(checkout)另一个分支。切换到另一个分支上工作。
远程分支和本地分支对应
- push成功的条件就是远程分支是我本地分支的父亲,意思就是远程做过的修改(历史状态变更/节点)我本地都做过了,所以我可以push成功,否则远程分支有另外的修改(有分叉)但我本地却没有,因此push会产生冲突。通过合并(merge)\解决冲突(solve conflict)后再合并(merge)。
- 同理,pull(fetch+merge)成功的条件是本地分支是远程分支的父亲。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-08-05 SCOPE_IDENTITY 和 @@IDENTITY
2012-08-05 ASP.NET MVC4中调用WEB API的四个方法
2012-08-05 asp.net mvc 为什么是Html.CheckBox 复选框生成一个额外的隐藏域 input type="hidden"
2012-08-05 ASP.NET MVC 过滤器大全
2012-08-05 asp.net mvc ChildActionOnly 和ActionName的用法