新提交是否包含旧提交变更?基于Commit B的分支内容咨询
嘿,这个问题问到点子上了,很多刚接触Git的朋友都会搞混提交的本质——我来给你讲明白:
关于Commit B的内容
Git的提交本质是整个仓库当前状态的快照,不是只记录修改的差异。也就是说:
- 当你做Commit A时,Git保存的是「原文本 + 新增2行」的完整文件状态
- 当你做Commit B时,Git保存的是「原文本 + Commit A的2行 + Commit B新增的2行」的完整文件状态
所以Commit B里是文件的完整内容,包含原文本和全部4行新增内容,不是只存最后加的2行。
基于Commit B创建分支的内容
分支在Git里其实就是个指向特定提交的「指针」而已。当你基于Commit B创建新分支时,这个新分支会直接指向Commit B对应的快照状态。所以新分支里的文件内容和Commit B完全一致——也就是原文本加上全部4行新增内容,不会只包含Commit B里加的2行。
简单总结:Git的提交是完整快照,分支只是指向快照的指针,所以不管是Commit B本身,还是基于它建的分支,都是包含所有历史累积下来的完整文件内容~
内容的提问来源于stack exchange,提问作者Spires
相关产品推荐
相关产品推荐

